1

私がテーブルに座っている場合:

  • リソース (id (PK)、名前)
  • マネージャー (id(PK)、resource_id (FK)、manager_resource_ID(FK))

resource_id と manager_id の両方がResourceテーブルへの外部キーである必要があります。

私は明らかに、適切なリソースではない各列に値を入力したくありません

最初の関係 (resource_id <-> id) を追加すると正常に動作しますが、

2 つ目 (manager_resource_id <-> id) を追加すると、次のエラーで失敗します。

関係 [ を作成できません。. .] ALTER TABLE ステートメントが FOREIGN KEY 制約 [... ] と競合しました。テーブル Resource、列 ID で競合が発生しました

または、これを 3 つのテーブルに分割する必要がありますか?

Resource(id, first, last)
Resource_manager(id, resource_id, manager_ID)
Manager(id)

4

2 に答える 2

1

ヒント:

resourcemngr_model_01

更新

モデルに従業員マネージャーが多対多 (少し珍しい) の場合、次のようにすることができます。

resourcemngr_model_02

CREATE TABLE Employee
  ( 
   EmployeeID int NOT NULL
  ,[Name] varchar(50)
  )
go  
ALTER TABLE Employee ADD
CONSTRAINT PK_Employee PRIMARY KEY CLUSTERED (EmployeeID ASC)
go   

CREATE TABLE Manager
  ( 
   EmployeeID int NOT NULL
  ,ManagerID int NOT NULL
  )
go  
ALTER TABLE Manager ADD
 CONSTRAINT PK_Manager PRIMARY KEY CLUSTERED (EmployeeID ASC, ManagerID ASC)
,CONSTRAINT FK1_Manager FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID)
,CONSTRAINT FK2_Manager FOREIGN KEY (ManagerID) REFERENCES Employee(EmployeeID)
,CONSTRAINT chk_Manager CHECK (EmployeeID <> ManagerID) 
go  
于 2009-12-27T14:26:33.763 に答える
0

Manager テーブルに外部キーを作成する必要があります。

于 2009-12-27T13:53:17.057 に答える