sql >> データベース >  >> RDS >> Mysql

アソシエーションテーブルの実装

    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
    

    これらの例は、標準の内部結合を示しているだけです。ニーズにより適した他の結合タイプがあります。



    1. 別のスキーマのDjango外部キー

    2. express&mysqlを使用したNode.js API-レコード数、ページ番号などを取得し、ページネーションを提供します

    3. すべてのテーブルのSQLServerデータベースに外部キー制約を削除する方法-SQLServer/TSQLチュートリアルパート72

    4. SqlServer:ユーザーのログインに失敗しました