0

たとえば、3 つの列 (varchar 型) を持つテーブルがあり、Unique キーは 3 つの列の組み合わせです。もう 1 つの列 (int 型) を作成し、その主キーを設定する必要があります。もちろん、一意 (column1、column2、column3) を設定しますか?

それで、どちらが良いですか?3 つの一意の列または 4 つの列 (1 つの主キー + 3 つの一意の列)、およびなぜそのオプションが優れていると思いますか?

4

3 に答える 3

1

そのテーブルを作成するには、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
于 2013-04-19T11:26:25.930 に答える