组合主键

时间:2016-11-16 19:57:12

标签: sql sql-server

我创建了一个包含3个表的数据库。

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

我相信我需要在ButlerSchedule中使用外键来引用其他两个表中的主键,但我不确定如何完成此任务。谢谢。

我正在使用SQL-Server

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

1 个答案:

答案 0 :(得分:2)

将此添加到您的init.bat表架构中。

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)