0

私はそれが最初の標準的な質問であることを知っていますが、誰かが私に尋ねましたが、私は彼に適切な答えを与えることができませんでした. フィールドを持つ従業員テーブルEmployee,Technologyに保存された多対多のリレーションを持つ2 つのテーブルがあります- ,ここで、フィールドを持つテクノロジー, これらの 2 つのテーブルは名前の重複を許可します.一意のエントリを許可するには、どの一意の制約を定義する必要がありますか?employee_technology_relemp_id (auto_increment)emp_name(varchar)DOB (date)tech_id(auto_increment)tech_name(varchar)

4

3 に答える 3

0

employee_technology_relテーブルに一意のエントリを定義できます。

ALTER TABLE employee_technology_rel 
       ADD CONSTRAINT emptech_pk PRIMARY KEY (emp_id, tech_id)
// or if you have set a primary key already, you can still define via UNIQUE
ALTER TABLE employee_technology_rel 
       ADD CONSTRAINT emptech_uq UNIQUE (emp_id, tech_id)

それが何をするかは、すべての従業員に独自のテクノロジーのみを許可することです。

テーブルで一意にするだけでなく、emp_nameテーブルで一意にするために、一意の制約を追加してテーブルを変更することもできますEmployeetech_nameTechnology

ALTER TABLE Employee ADD CONSTRAINT emp_uq UNIQUE (emp_name)
ALTER TABLE Technology ADD CONSTRAINT tech_uq UNIQUE (tech_name)
于 2013-03-14T12:51:23.033 に答える
0

employee_technology_rel の 2 つの列 emp_id と tech_id で定義された複合主キーが必要です。

于 2013-03-14T12:51:28.760 に答える
0

Unique Index と Unique Constraint は同じです。彼らは同じ目標を達成します。SQL パフォーマンスはどちらも同じです。

一意の制約 ALTER TABLE dbo を追加します。[プライマリ] に制約の一意のクラスター化されていない ( ) を追加

一意のインデックスを追加 する dbo に一意の非クラスター化インデックスを作成します。( ) オン [プライマリ]

ソースsqlauthority.comおよびmsdnを Google 検索から: " SQL サーバーの一意のインデックス"。

于 2013-03-14T12:55:33.490 に答える