Сценарии для внешних ключей для автомобиля, клиента и сотрудника, похоже, дублированы.
Имена ограничений должны содержать имена для FK и таблиц PK, например,
fk_sales_client
Таким образом, они не будут конфликтовать с другими именами ограничений при увеличении схемы БД и добавлении новых ограничений.Например, у вас может быть сотрудник, который является ответственным контактным лицом для клиента.С вашей схемой именования вы получите два ограничения, называемые employee_id
(для client->employee
и sales->employee
).
Иногда в одной и той же таблице существует более одного внешнего ключа к одной и той же PK-таблице, напримерв таблице продуктов вы можете указать FK по адресу производителя, а другой - по адресу поставщика.Затем вам потребуется другой способ различения имен ограничений:
fk_product_address01
fk_product_address02
или
fk_product_address_man
fk_product_address_sup
Если один клиент может купить более одного автомобиля на продажу, и это могут быть разные модели автомобилей, то вы должны перекрасить вашу БД.Вам нужна новая таблица соединений sales_item
, чтобы реализовать отношение m-to-n между sales
и automobile
.Вероятно, эта новая таблица также будет содержать столбец quantity
.
+------------+ +------------+
| | | |
| Client | | Employee |
| | | |
+----+-------+ +---------+--+
^ ^
| |
| +--------------+ | +-------------+
| | o--+ | |
+-----o Sales | | Automobile |
| | | |
+----+---------+ +-------+-----+
^ ^
| |
| +------------+ |
| | | |
+--------o Sales_Item o--------+
| |
+------------+