Locations
間の関係 およびEvents
1対多の関係の例です。これは、個々の場所に多くのイベントを関連付けることができることを意味します。これらのタイプの関係は通常、「one」テーブル(場所)の主キーを参照する「many」テーブル(イベント)に外部キーを追加することによって実装されます。
「場所」と「タイプ」の関係は、多対多の関係の例です。これは、場所には多くのタイプがあり、タイプは多くの場所に関連付けることができることを意味します。これらのタイプの関係は通常、関連する行の外部キーを含むリンクテーブルを使用して実装されます。リンクテーブルには通常、2つの外部キーの複合主キーがあります。つまり、1つの場所を「bar」タイプに2回リンクすることはできません。
したがって、次のテーブル構造が適している可能性があります。
Location: ID (primary key), LocationName, ...
Events: ID (primary key), LocationID (foreign key), Date, Name, ...
LocationTypes: LocationID (fk), TypeID (fk)
Types: ID (pk), Name, ...
複数のテーブルの情報をクエリするには、結合を使用する必要があります。 1対多の関係の場合、次のクエリが機能します。
SELECT
l.LocationName, e.Name, e.Date
FROM Location l
JOIN Events e ON l.ID = e.LocationID
多対多の関係の場合、次のクエリで情報が結合されます。
SELECT
l.LocationName, t.Name as TypeName
FROM Location l
JOIN LocationTypes lt ON l.ID = lt.LocationID
JOIN Types t ON lt.TypeID = t.ID
これらの例は、標準の内部結合を示しているだけです。ニーズにより適した他の結合タイプがあります。