たとえば、3 つの列 (varchar 型) を持つテーブルがあり、Unique キーは 3 つの列の組み合わせです。もう 1 つの列 (int 型) を作成し、その主キーを設定する必要があります。もちろん、一意 (column1、column2、column3) を設定しますか?
それで、どちらが良いですか?3 つの一意の列または 4 つの列 (1 つの主キー + 3 つの一意の列)、およびなぜそのオプションが優れていると思いますか?
たとえば、3 つの列 (varchar 型) を持つテーブルがあり、Unique キーは 3 つの列の組み合わせです。もう 1 つの列 (int 型) を作成し、その主キーを設定する必要があります。もちろん、一意 (column1、column2、column3) を設定しますか?
それで、どちらが良いですか?3 つの一意の列または 4 つの列 (1 つの主キー + 3 つの一意の列)、およびなぜそのオプションが優れていると思いますか?
そのテーブルを作成するには、3 つの適切な方法があります。基礎となるリレーショナルの原則は、すべての既知の制約を dbms に宣言する必要があるため、dbms はそれらを強制できます。いずれの場合も、実際のデータを含む 3 つの列は、おそらく NOT NULL と宣言する必要があります。
create table wibble (
column_1 data-type not null,
column_2 data-type not null,
column_3 data-type not null,
primary key (column_1, column_2, column_3)
);
create table wibble (
surrogate_id_number integer primary key,
column_1 data-type not null,
column_2 data-type not null,
column_3 data-type not null,
unique (column_1, column_2, column_3)
);
create table wibble (
surrogate_id_number integer not null unique,
column_1 data-type not null,
column_2 data-type not null,
column_3 data-type not null,
primary key (column_1, column_2, column_3)
);
ID 番号列に対する主キー制約だけでは機能しない可能性があることは明らかです。これにより、このような重複データが許可されます。
1 Value1 Value2 Value3
2 Value1 Value2 Value3
3 Value1 Value2 Value3
4 Value1 Value2 Value3
5 Value1 Value2 Value3