Создание таблиц ERD и SQL на основе ERD - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть задание создать ERD из данной истории, а затем составить таблицы и создать базу данных с предоставленной информацией.

История:

Существует компания по недвижимости:

  • Дома для продажи находятся в определенном районе.
  • Каждый район является частью города (как мы знаем, в городе много районов)
  • Каждый дом относится к типу дома, такому как: вилла, квартира, пентхаус и т. Д.
  • Каждый дом имеет владельца, который является клиентом компании
  • Продажа (дом) производится новому владельцу (клиенту компании), и в продаже клиент может купить только один дом
  • Продажа осуществляется продавцом (работником компании)
  • каждыйпродавец специализируется на разных типах домов, и иногда есть несколько продавцов, которые специализируются на одних и тех же типах домов

ERD, с которым мне удалось придумать, выглядит следующим образом:

Erd

Таблицы, которые мне удалось построитьявляются:

Tables

Я почти уверен, что некоторые таблицы неверны, начиная с ERD.

Буду очень признателен за помощь в установке правильныхтаблицы, прежде чем я создаю свою базу данных.

1 Ответ

0 голосов
/ 16 декабря 2018

Я тщательно проверил ваш дизайн, и это правда, что необходимы некоторые улучшения, чтобы правильно соответствовать вашему варианту использования.

Следующие предположения правильно реализованы (однако имена полей могут быть уточнены):

  • Дома для продажи находятся в определенном районе
    => 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
...