一个数据库模式设计问题:
假设我想设计一个包含机器人、技术人员和站点的数据库。
我想使用我的数据库约束来限制数据,以防止输入一些无意义的情况。
例如,我制造了一个机器人;当我把他租出去时,我会把他分配并运送到一个站点。
我在数据库中输入一条记录 - 机器人只能位于一个站点,因此我可以为机器人表提供一个可以为空的 SiteID 外键字段来表示该限制。然后,任何机器人都不能分配给数据库中的两个站点。
create table Sites (
SiteID int not null,
Name varchar(1024) not null,
primary key (SiteID)
);
create table Robots (
RobotID int not null,
SiteID int nullable,
primary key (RobotID),
constraint 'fk_robots_sites_siteid' foreign key (SiteID) references Sites(SiteID)
);
目前很好。
所以现在我想将技术人员添加到我的数据库中:
create table Technicians (
TechnicianID int not null,
name varchar(1024) not null,
primary key (TechnicianID)
);
如果...我想让我的一些机器人充当我的技术人员的司机怎么办?然后,机器人可以被分配给站点或技术人员 - 但不能同时分配给两者。
我不知道如何在架构中实现这个约束。
建议?
在表中
Robots
,UNIQUE(SiteId) INT NULL
提供了您需要的内容。通过说
NULL
,您可以表明 sqy 机器人尚未被租用。A
FOREIGN KEY
是可选的;它允许检查当您将新行放入SiteId
时是否有效。INSERT
Robots