SQL の双方向テーブルとは何ですか?
そして、これらの双方向テーブルをどのように読むことができますか
双方向テーブルは、データを保存する方法ではなく、データを表示する方法です。データの保存方法については何も述べていません。
人を IQ と住んでいる国とともに保存するとします。テーブルは次のようになります。
国名 ジョン・スミス 125 GB メアリー・ジョーンズ 150GB ファン・ロペス 150 ES リズ・アレン 125GB
IQ と国の関係を示す双方向テーブルは次のようになります。
| | 125 | 150 ---+------+---- GB | 2 | 1 エス | 0 | 1
また
| | GB | ES --+-----+--- 125 | 2 | 0 150 | 1 | 1
データベースからこのデータを取得するには、次のクエリを記述します。
select iq, country, count(*)
from persons
group by iq, country;
SQL はデータを取得するためのものです。プレゼンテーションやレイアウトを気にする必要はありません。したがって、(PHP、C#、Java などで) データベースにクエリを送信し、データを受信し、GUI グリッドをループで埋めるプログラムを作成します。
まれに、SQL 自体がレイアウトを提供する場合があります。つまり、データを列と行で提供します。これは、1 つのディメンションの属性が事前にわかっている場合です。これは通常、与えられた例のように IQ や国の場合には当てはまりません (つまり、表に示していなければ、どの国とどの IQ が表に存在するかを知らなかったでしょう)。もちろん、最初に国または IQ を取得してから、(条件付き集計またはピボットを使用して) メイン クエリを動的に作成することもできます。値が事前にわかっているもう 1 つのケースはブール値です。たとえば、ある人がホームレスかどうかを示す person テーブルのフラグです。どの国に何人のホームレスがいるかという結果が必要な場合は、ホームレスとホームレス以外の 2 つの列を含むクエリを簡単に作成できます。
前述のように、データを双方向テーブルに表示できるということは、このデータがどのように保存されているかについては何も言いません。上記では、1 つのテーブルの例を示しました。しかし、多くの都市に店舗があり、どの都市に住んでいる人が痩せているか太っているのかを知りたいとしましょう。あなたは、どの都市でどのサイズの T シャツを販売したかを確認することにしました。したがって、クライアントの注文を受け取り、クライアントと彼らが住んでいる都市を調べます。また、注文の詳細とそれらが参照するアイテムを調べてから、タイプ T シャツのすべてのアイテムを受け取ります。関連するテーブルは多数ありますが、結果はやはり 2 つの属性の関係を示す両面テーブルになります。例えば:
都市 | さ | み | 中 | XL -----+-----+-----+-----+----- ニューヨーク | ニューヨーク | 5% | 8% | 7% | 10% ロサンゼルス | 10% | 7% | 7% | 8% シカゴ | シカゴ | 1% | 4% | 6% | 11% ヒューストン | 2% | 2% | 5% | 7%