Exemplo simples: existe uma tabela de clientes.
create table Customers (
id integer,
constraint CustomersPK primary key (id)
)
Todos os outros dados no banco de dados devem estar vinculados a um Customer
, então, por exemplo, Orders
fica assim:
create table Orders (
id integer,
customer integer,
constraint OrdersPK primary key (customer, id),
constraint OrdersFKCustomers foreign key (customer) references Customers (id)
)
Suponha que agora exista uma tabela com links para Orders
:
create table Items (
id integer,
customer integer,
order integer,
constraint ItemsPK primary key (customer, id),
constraint ItemsFKOrders foreign key (customer, order) references Orders (customer, id)
)
Devo adicionar uma chave estrangeira separada de Items
para Customers
?
...
constraint ItemsFKCustomers foreign key (customer) references Customers (id)
Uma imagem: devo adicionar a linha tracejada / FK?
Editar: adicionei definições de chave primária às tabelas. Gostaria de reiterar o que afirmei acima: o banco de dados é basicamente isolado pelos clientes, como uma medida de correção / segurança. Portanto, todas as chaves primárias contêm o customer
ID.