If you see this, you must use any unsupported web browser. Or constructing the page.
この表示が見えている場合、描画処理中です。しばらくお待ちください。 長時間見えている場合は、非対応ブラウザで参照しています。

INTER-Mediator Lab. - Room 1

問題8:関連レコードの展開

ある駅には、マクドナルドや吉野家といったチェーン店があるとします。別の駅では、最初の駅と同じくマクドナルドがあるかもしれませんが、また別のチェーン店があるかもしれません。このような状況をデータベースに記録するために、以下のように3つのテーブルを用意しました。駅やチェーン店はもちろん、もっとたくさんありますが、その一部がデータになっていると考えてください。なお、チェーン店名は実在のものですが、駅に存在するかどうかの情報は架空のものです。

駅名を記録した主キーフィールドがstation_idのテーブル「station」は以下の通りです。

station_id station_name
101 東川口
102 北朝霞
103 東松戸
104 北府中

チェーン店名を記録した主キーフィールドがchain_idのテーブル「chain」は以下の通りです。

chain_id chain_name
501 マクドナルド
502 モスバーガー
503 スターバックス
504 ドトールコーヒー

以下のようなテーブル「association」があるとします。主キーフィールドは「id」です。このテーブルにある、station_idと、stationテーブルのstation_idとに入力する数値に関して、同一のものが対応付けられています。同様に、このテーブルのchain_idと、chainテーブルのchain_idフィールドの値が対応付けられています。たとえば、id=2のレコードは、station_id=101なので、stationテーブルより「東川口」駅に関する情報であることが分かり、さらにchain_id=502なので「モスバーガー」であることが分かります。このようなテーブルを作る事で、東川口駅にはモスバーガーがあることが記録できています。同様に、id=3〜5のレコードが存在することで、station_id=102より「北朝霞駅」には、chain_id=501, 503, 504がそれぞれ存在するので、マクドナルドとスターバックス、ドトールコーヒーがあることが記録されています。なお、station_id=104に対応する北府中駅のレコードがassociationテーブルにはなく、この駅の周辺にはこれらのチェーン店がまったく存在しないこともこのテーブルの内容から判断できます。

id station_id chain_id
1 101 501
2 101 502
3 102 501
4 102 503
5 102 504
6 103 501
7 103 502
8 103 504

このとき、すべてのチェーン店に対して、それらが存在する駅名の一覧を表示するページを作りたいとします。駅名の一覧では、station_idフィールドの値と駅名を表示するとします。まず、次のようなコンテキストを定義ファイルに記述します。定義ファイルの空欄を埋めてください。なお、記述が不要な箇所は「記述不要」と記入してください。

name: station
key:
relation:
-
name: chain
key:
relation:
-
name: association
key:
relation:

前述の定義ファイルを利用するページファイルを作ります。ヘッダ部とBODY要素に記述する内容はすでに記述されているとして、テーブルの見出しに対応したデータが表示されるように、空欄を埋めてください。

<table>
    <thead>
        <tr><th>チェーン店名</th><th>駅名</th></tr>
    </thead>
    <tbody>
        <tr>
            <td class=""></td>
            <td>
                <table>
                    <tr>
                        <td>
                            <span class="IM[association@station_id]"></span>
                            <span class="">
                                <span class="_im_repeater">
                                    <span class=""></span>
                                </span>
                            </span>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </tbody>
</table>

解答調査

ログインユーザ:|

解答し終わったとき、以下のラジオボタンのいずれかを選択して、「解答した」ボタンをクリックしてください。

この問題を解くのにどれくらいの労力がかかったでしょうか?

問題を見るだけで解答が分かった
他のページは書籍を調べて分かった
実際にコードを打ち込み確認するなどして分かった
調べたり確認したりして悩み抜いて解答した
さっぱり分からないので勘で答えた
解答を保留した

←クリックすると、次のページに移動します。

実験のトップページ(Room 1)へ