結合プライマリ・キーと複合プライマリ・キーの違い
2191 ワード
転載先:https://www.cnblogs.com/CNty/p/10941398.html
まず連合プライマリ・キーについてお話ししますが、連合プライマリ・キーは実は中間テーブルです.マルチペアマルチモデルでは、2つのテーブルのプライマリ・キーが結合プライマリ・キーを構成する必要があります.これにより、2つのテーブルの各データを調べることができます.次の例で説明します.
CREATE TABLE TEAM(
Id MEDIUMINT AUTO_INCREMENT COMMENT ' ',
Dev VARCHAR (30) COMMENT ' ',
Pm VARCHAR(30) COMMENT ' ',
Hr VARCHAR(30) COMMENT ' ' ,
PRIMARY KEY (Id)
)
ENGINE = INNODB,
CHARSET = UTF8 ;
CREATE TABLE information (
Id MEDIUMINT AUTO_INCREMENT COMMENT ' ',
Name VARCHAR(30) COMMENT ' ',
Age int(10) COMMENT ' ',
PRIMARY KEY(Id)
)
ENGINE=INNODB,
CHARSET = UTF8;
2つのテーブル間の要素を問い合わせるために、中間テーブルTEAM_を作成します.info
CREATE TABLE IF NOT EXISTS TEAM_info(
Id MEDIUMINT AUTO_INCREMENT COMMENT ' Id',
TEAM_Id MEDIUMINT COMMENT ' Id',
info_Id MEDIUMINT COMMENT ' Id',
PRIMARY KEY(Id)
)
ENGINE=INNODB,
CHARSET=UTF8;
その後、中間テーブルで連結テーブルクエリー操作を行うことができます.
次は複合プライマリ・キーです.1つのテーブルに1つのプライマリ・キーしかありませんが、必要に応じて、複数のフィールドを同時にプライマリ・キーとして設定できます.これを複合プライマリ・キーと呼びます.(PS:多くの人が連合キーに翻訳されているのを見ていますが、個人的には正確ではなく、混同しやすいと思います)例えば、テーブルを作成します.
CREATE TABLE IF NOT EXIST student(
Name VARCHAR (30 ) COMMENT ' ',
Age INT(30) COMMENT ' ',
PRIMARY KEY(Name,Age)
);
ここで、NameフィールドとAgeフィールドは複合プライマリ・キーであり、主にNameの重複を防止するために設定されているため、AgeとNameを複合プライマリ・キーとして設定すると、プライマリ・キーのフィールド長とフィールド数が少ないほど良い.次に、INNODBエンジンの下でプライマリ・キーの自己成長を設定するには、自己成長の列が最初の列でなければなりません.その後、非自己成長の列を指定するだけでいいので、自己成長の繰り返しが発生します.自己成長が繰り返されると、プライマリ・キー・インデックスまたは一意のインデックスを作成できます.テーブル構造が既に存在する場合、複合プライマリ・キーを追加するには、次の方法を使用します.
ALTER TABLE tb_name
ADD PRIMARY KEY (
PRIMARY_KEY_NAME_1,
PRIMARY_KEY_NAME_2
);
なお,ここでは元のテーブル構造にプライマリ・キーがない必要があり,ある場合は,まずALTER DROPから元のプライマリ・キーを外し,複合プライマリ・キーを追加する必要がある.
≪結合プライマリ・キー|Join Primary Key|oem_src≫:複数対の多関係モデルで、クエリーを結合するために、2つのテーブルのプライマリ・キーを結合プライマリ・キーに構成します(テーブルに2つのプライマリ・キーがあるわけではありませんが、テーブルの列は他の2つのテーブルのプライマリ・キーに依存します).
複合プライマリ・キー:1つのテーブルで、(カラム1+カラム2+カラム...)追加されたデータは一意で、(列1+列2+列...)同時にメインキーを設定し、列1、列2、列...いずれもプライマリ・キーの一部です.