MySQL
多対多マッピングテーブル
サーチ…
備考
- このテーブルの
AUTO_INCREMENT
IDの欠如 - 与えられたPKは '自然な' PKです。代理人には正当な理由はありません。 -
MEDIUMINT
- これは、すべてのINTs
を安全なほど小さいものにする必要があることを思い出させるものです(小さな⇒より速く)。もちろんここの宣言は、リンク先の表の定義と一致していなければなりません。 -
UNSIGNED
- ほぼすべてのINTが非負と宣言される場合もあります -
NOT NULL
- まあ、そうですね。 -
InnoDB
-InnoDB
のデータでPRIMARY KEY
がクラスタリングされるため、MyISAMよりも効率的です。 -
INDEX(y_id, x_id)
-PRIMARY KEY
をINDEX(y_id, x_id)
と効率的に一方向に進むことができます。他の方向を効率的にする。UNIQUE
な言葉は必要ありません。それはINSERTs
余計な労力をINSERTs
ます。 - セカンダリインデックスでは、暗黙的に
x_id
するため、INDEX(y_id)
というだけでx_id
ます。しかし、私はむしろ、私が「カバーする」指標を望んでいることをより明白にしたいと思う。
テーブルに列を追加することができます。これはまれです。余分な列は、表が表す関係に関する情報を提供できます。
FOREIGN KEY
制約を追加することができます。
典型的なスキーマ
CREATE TABLE XtoY (
# No surrogate id for this table
x_id MEDIUMINT UNSIGNED NOT NULL, -- For JOINing to one table
y_id MEDIUMINT UNSIGNED NOT NULL, -- For JOINing to the other table
# Include other fields specific to the 'relation'
PRIMARY KEY(x_id, y_id), -- When starting with X
INDEX (y_id, x_id) -- When starting with Y
) ENGINE=InnoDB;
(根拠については、下記の備考を参照)。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow