Uma questão de design de esquema de banco de dados:
Suponha que eu queira projetar um banco de dados com Robôs, Técnicos e Sites.
Quero usar as restrições do meu banco de dados para limitar os dados e evitar a entrada de alguns casos sem sentido.
Por exemplo, eu fabrico um Robô; quando eu o alugo, eu o atribuo e envio para um Local.
Eu insiro um registro em meu banco de dados - um Robô só pode estar em um Site, então eu poderia fornecer à tabela Robôs um campo SiteID Foriegn Key anulável para Sites para representar esse limite. Nenhum robô poderá então ser atribuído a dois locais no banco de dados.
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)
);
Bom até agora.
Agora quero adicionar Técnicos ao meu banco de dados:
create table Technicians (
TechnicianID int not null,
name varchar(1024) not null,
primary key (TechnicianID)
);
E se... eu quisesse que alguns dos meus robôs atuassem como motoristas dos meus técnicos? Então, um Robô poderia ser atribuído a um Local ou a um Técnico - mas não a ambos.
Não consigo descobrir como implementar essa restrição no esquema.
Sugestões?