ホームページ >データベース >mysql チュートリアル >mysql複合主キーとはどういう意味ですか?

mysql複合主キーとはどういう意味ですか?

青灯夜游
青灯夜游オリジナル
2023-03-30 10:15:294193ブラウズ

MySQL では、複合主キーとは、データベース テーブルの主キーに複数のフィールドが含まれること、つまり、複数フィールドの主キーを意味します。複合主キーは主キーの一種であり、主キーと同じ機能と定義。複合主キーには不要な冗長列を含めることはできません。複合主キーの列が削除されたときに、残りの列で構成される主キーが一意性原則を満たしている場合、複合主キーは正しくありません。

mysql複合主キーとはどういう意味ですか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

データテーブルの複合主キーとは何ですか?

いわゆる複合主キーとは、テーブルの主キーに複数のフィールドが含まれていることを意味します。

MySQL のマルチフィールド主キーは、複合主キーになることもできます。複合主キーも主キーの一種であり、主キーと同じ機能と定義を持ちます。

主キー制約は、テーブル内のデータの各行の識別子を一意に決定するためにテーブル内の主キーを定義します。主キーは、テーブル内の特定の列または複数の列の組み合わせにすることができ、複数の列で構成される主キーは複合主キーと呼ばれます。

複合主キーには不必要な冗長列を含めることはできません。複合主キーの列が削除されたときに、残りの列で構成される主キーが一意性原則を満たしている場合、その複合主キーは正しくありません。これが最小化の原理です。

例:

create table test
(
name varchar(19),
id number,
value varchar(10),
primary key (name,id)
)

上記の名前フィールドと ID フィールドの組み合わせは、テスト テーブルの複合主キーです。

これは、名前フィールドが同じである可能性があるために表示されます。 name. であるため、レコードの一意性を保証するために ID フィールドを追加する必要があります。

複合主キーが表示されるのはなぜですか?

これは、テーブル名が原因です。フィールドが同じ名前を持つ可能性があるため、レコードの一意性を確保するために id フィールドを追加する必要があります。開発では、主キー フィールドを 1 つ保持することをお勧めします。2 つの複合主キーを作成する必要がある場合は、オブジェクトを一意に識別するフィールド。

それでは、再び質問になりますが、テーブルには主キーが 1 つしか持てないということではないでしょうか?主キーはテーブルの唯一のインデックスですが、なぜテーブルで複数の主キーを作成できるのでしょうか?

実際、「主キーが唯一のインデックスである」というのは少し曖昧です。例を示します: 私たちは、テーブルに id フィールドがあることに慣れており、これは自動拡張するように設定され、次のように設定されています。この時点では「主キーが唯一のインデックス」であり、ID は一意性を確保するために自動的に増加します。このとき、フィールド名 varchar(50) が作成されると、それが主キーとしても設定され、このとき、id と name が複合主キーとなり、テーブル内の name フィールドに同じ名前の値を挿入できます。データを挿入するとき。このとき、別の問題があります。「主キーは一意のインデックスです。どうすれば同じ値を持つことができますか?」と言われませんか?

だから、「主キーは「一意のインデックス」は曖昧です; 主キーは一意のインデックスです 前提は、「テーブル内に主キーが 1 つだけある場合、それが唯一のインデックスです。テーブル内に複数の主キーがある場合、それは複合インデックスと呼ばれます」主キー。複合主キーの組み合わせにより一意のインデックスが保証されます。これは、複合主キーの組み合わせとして理解できます。テーブルの一意のインデックス (主キー)。自己増加 ID が既に一意の識別のための主キーとして使用されているのはなぜですか? なぜ複合主キーが依然として必要なのでしょうか?すべてのテーブルに ID フィールドが必要なわけではないため、たとえば、学生テーブルを作成するときに、学生を識別できる一意の ID がない場合はどうすればよいでしょうか。生徒の名前、年齢、クラスは繰り返される可能性があり、単一のフィールドを使用して一意に識別することはできません。この場合、複数のフィールドを主キーとして設定して、複合主キーを形成できます。これらの複数のフィールドを結合して一意性を識別します。その中で、確かに主キーフィールドの値が重複していても問題ありませんが、複数のレコードの主キーの値がすべて全く同じであれば重複とはみなされません。

要約: 開発では、主キー フィールドを 1 つ保持することが最善です。2 つの複合主キーを作成する必要がある場合は、テーブルの作成時にオブジェクトを一意に識別できるフィールドを探す必要があります。 。つまり、複合主キーの使用量を減らします。

複合主キーを追加するにはどうすればよいですか?

テーブルの作成時に複合主キーを追加できます。このとき、主キーは複数のフィールドで構成されます。構文規則は次のとおりです:

PRIMARY KEY [字段1,字段2,…,字段n]

例:主キー ID がないことを前提としてデータ テーブル tb_emp を作成します。従業員を一意に識別するには、name と deptId を主キーとして組み合わせます

mysql> CREATE TABLE tb_emp
    -> (
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> PRIMARY KEY(id,deptId)
    -> );
Query OK, 0 rows affected (0.37 sec)

mysql複合主キーとはどういう意味ですか?

#結合主キー

結合主キーと複合主キーの違いは、結合主キーは複数のテーブルに反映され、複合主キーはテーブル内の複数のフィールドに反映されます。

学生表:student
create table student(
id int auto_increment comment '主键id',
name varchar(30) comment '姓名',
age smallint comment '年龄',
primary key(id)
);

课程表:course
create table course(
id int auto_increment comment '主键id',
name varchar(30) comment '课程名称',
primary key(id)
);

学生课程表:stu_course
create table IF NOT EXISTS stu_cour(
id int  auto_increment comment '主键id',
stu_id mediumint comment '学生表id',
cour_id mediumint comment '课程表id',
primary key(id)
);

現時点では、stu_course の id は共同主キーを表しており、学生とコースのレコードは id

を通じて取得できます。

したがって、結合主キーは、その名前が示すように、複数の主キーを組み合わせて主キーの組み合わせを形成し、それが和集合に反映されます。 (主キーは原則として一意であり、一意の値によって問題になることはありません) インデックスを使用すると、データ クエリの速度が大幅に向上しますが、テーブルの挿入、削除、更新の速度が遅くなります。インデックスを操作する必要があります。簡単な例: 主キー A と主キー B は結合主キー C を形成します。主キー A と主キー B のデータはまったく同じにすることができます。結合とは、主キー A と主キーによって形成される結合主キー C です。 B はユニークです。

[関連する推奨事項: mysql ビデオ チュートリアル ]

以上がmysql複合主キーとはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。