Простий приклад: є таблиця клієнтів.
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
ідентифікатор.