2016-11-16 70 views
0

我创建了一个包含3个表的数据库。组合主键

我的问题是我如何使ButlerSchedule表的主键是ButlerID,CustID和ScheduleDateTime的组合?

我认为我需要在ButlerSchedule中引用另外两个表中的主键的外键,但我不确定如何完成此任务。谢谢。

我使用SQL-服务器

1巴特勒

ButlerID (PK, int, not null) 

ButlerModel (varchar (70), null) 

ButlerName (varchar (70), null) 

ButlerType (varchar (70), null) 

ButlerMadeOnDate (date, null) 

ButlerActive (bit, null) 

ButlerOutOfServiceDate (date, null) 

Primary主要是PK_Butler_ButlerID

2. ButlerCustomer

CustID (PK, int, not null) 

CustFName (varchar (70), null) 

CustLName (varchar (70), null) 

CustAddress (varchar (70), null) 

CustCity (varchar (70), null) 

CustState (varchar (70), null) 

CustZip (char (10), null) 

CustCurrent (bit, null) 

CustPITA (bit, null) 

Primary主要是PK_ButlerCustomer_CustID

3 ButlerSchedule

ScheduleDateTime (PK, date, not null) 

PaidStatus (char (1), null) 

CompletedStatus (char (1), null) 

ButlerReview (varchar (max), null) 

CustReview (varchar (max), null) 

EnteredDate (date, null) 

ModifiedDate (date, null) 

Primary主要是PK_ButlerSchedule_ScheduleDateTime

+0

欢迎来到Stack Overflow!请查看我们的[SO问题清单](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)来帮助你提出一个好问题,从而得到一个很好的答案。 –

回答

2

添加到您的ButlerSchedule表模式。

ButlerID int FOREIGN KEY REFERENCES Butler(ButlerID) 
CustID int FOREIGN KEY REFERENCES ButlerCustomer(CustID) 

因此,现在,您的BustlerSchedule模式将如下所示。

ScheduleDateTime (PK, date, not null) 
ButlerID (PK, int, not null) 
CustID (PK, int, not null) 
PaidStatus (char (1), null) 
CompletedStatus (char (1), null) 
ButlerReview (varchar (max), null) 
CustReview (varchar (max), null) 
EnteredDate (date, null) 
ModifiedDate (date, null) 
ButlerId int FOREIGN KEY REFERENCES Butler(ButlerID) 
CustId int FOREIGN KEY REFERENCES ButlerCustomer(CustID) 

如果您已经到位的模式,那么你将不得不改变你的表模式。

使用以下查询来更改您的表模式。

ALTER TABLE ButlerSchedule 
ADD ButlerID INT, 
ADD CustID INT, 
ADD CONSTRAINT fk_Butler_ButlerSchedule 
FOREIGN KEY (ButlerID) 
REFERENCES Butler(ButlerID), 
ADD CONSTRAINT fk_ButlerCustomer_ButlerSchedule 
FOREIGN KEY (CustID) 
REFERENCES ButlerCustomer(CustID); 
+0

我会使用ALTER TABLE子句来改变模式吗? – Frank

+0

是的,您将不得不使用'ALTER'命令更新模式。 –

+0

你能发布正确的语法为了我做到这一点?我仍然有点困惑。我 – Frank