MySQL
多対多マッピングテーブル
サーチ…
備考
- このテーブルの
AUTO_INCREMENTIDの欠如 - 与えられた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