Простой пример: есть таблица клиентов.
create table Customers (
id integer,
constraint CustomersPK primary key (id)
)
Все остальные данные в базе данных должны быть связаны с Customer
, например, Orders
так:
create table Orders (
id integer,
customer integer,
constraint OrdersPK primary key (customer, id),
constraint OrdersFKCustomers foreign key (customer) references Customers (id)
)
Предположим, теперь есть таблица, ссылающаяся на 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)
)
Должен ли я добавить отдельный внешний ключ от Items
к Customers
?
...
constraint ItemsFKCustomers foreign key (customer) references Customers (id)
Картина вместо этого: я должен добавить пунктирную линию / FK?
Изменить: я добавил определения первичного ключа в таблицы. Я хотел бы еще раз повторить сказанное мной выше: база данных в основном отбирается клиентами в качестве меры корректности / безопасности. Поэтому все первичные ключи содержат customer
идентификатор.