Я тщательно проверил ваш дизайн, и это правда, что необходимы некоторые улучшения, чтобы правильно соответствовать вашему варианту использования.
Следующие предположения правильно реализованы (однако имена полей могут быть уточнены):
Дома для продажи находятся в определенном районе
=> 1-N между Neighborhood.NeighborhoodID
и House.NeighborhoodID
Каждый район является частью города (как мы знаем, в городе много районов)
=> 1-N отношения между City.CityID
и House.CityID
Каждый дом относится к типу дома, например: вилла, квартира, пентхаус и т. Д.
=> 1-N отношения между HouseType.HouseTypeID
и House.HouseTypeID
Следующие предположения НЕ правильно реализованы в вашей схеме:
У каждого дома есть владелец, который является клиентом компании
=> Это отношение 1-N.Вам необходимо создать новое поле в House
с именем CustomerID
, которое ссылается на Customer.CustomerID
.Также вам необходимо создать новую таблицу Company
, в которой хранится информация о компании (не храните ее в таблице Customer
!).В таблице Customer
должно быть создано поле с именем CompanyID
, которое ссылается на первичный ключ таблицы Company
.В таблице Customer
не должно быть столбца HouseID
.
Сделана продажа (дома) новому владельцу (клиенту компании)а в продаже клиент может купить только один дом
=> Таблица Sale
будет содержать одну запись на продажу.Он ссылается на CustomerID
и SalesManID
(см. Далее).В таблице Customer
не должно быть столбца SalesID
.
Продажа осуществляется продавцом (работником компании)
=> таблица SalesMan
должна иметь поле CompanyID
, которое ссылается на таблицу Company
Каждый продавец специализируется на разных типах домов, и иногда есть несколько продавцов, которыеспециализироваться на тех же типах домов => таблица SalesMan
должна иметь поле HouseTypeID
, которое ссылается на таблицу HouseType
.Таблица SalesManToHouseType
должна быть отброшена
Еще одно замечание: вам следует упростить имена полей.Нет необходимости ставить префикс имени поля перед именем таблицы, так как поля уже принадлежат таблицам ... Это имеет смысл только при работе с внешним ключом, когда целесообразно поместить имя целевой таблицы в ссылкуимя поля.
Пример для таблицы House
:
ID -- not HouseID !
HouseTypeID -- foreign key to field ID in table HouseType
NeighborhoodID -- foreign key to field ID in table Neighborhood
CustomerID -- foreign key to field ID in table Customer
Address
NumRooms
...
Пример для таблицы HouseType
:
ID -- not HouseTypeID !
Name -- not HouseTypeName !
Description