Как я могу создать таблицы для базы данных транспортных средств? - PullRequest
0 голосов
/ 03 ноября 2011

MAKE - MODEL - YEAR - MOTOR - это объекты. Я работаю с этими 4 объектами, но я не нашел лучший дизайн (наверное, это неправильно)

Motor
- MotorID
- MotorName

Model
- ModelID
- MotorID
- ModelName

Year
- YearID
- YearName
- ModelID

Make
- MakeID
- MakeName
- YearID

Я смотрел этот сайт, чтобы выяснить, как это организовано: http://www.rockauto.com/catalog/raframecatalog.php

У меня все еще есть сомнения относительно дизайна этих четырех таблиц.

Ответы [ 4 ]

1 голос
/ 03 ноября 2011

Итак, рассмотрим, из чего состоит база данных

Транспортные средства / Мотор, которые будут содержать

  1. Идентификатор (регистрационный знак?)
  2. Производитель
  3. Модель
  4. Год, в котором она была сделана.

Теперь без нормализации это нормально, но вы можете видеть, что там будет дублирующаяся информация, поэтому вы извлечетечто по одному.Сначала вы бы поместили производителя в отдельную таблицу, и теперь Motor стал бы

  1. Идентификатором
  2. Идентификатор производителя (внешний ключ к таблице производителей)
  3. Модель
  4. Год, в котором она была изготовлена.

Таблица производителей будет содержать.

  1. Идентификатор производителя
  2. Название производителя.

Теперь вы можете посмотреть на модель.Но модель действительно производится только одним производителем, поэтому, хм, мы могли бы сделать это для модели

  1. Идентификатор модели
  2. Описание модели
  3. Идентификатор производителя (внешний ключ к таблице производителя)

И двигатель станет

Двигатель станет

  1. Идентификатор
  2. Идентификатор модели (внешний ключ к таблице производителя)
  3. Год, в котором она была сделана.

Лично я не уверен, что нормализую год в таблицу еесвоя.Год будет целочисленным полем, а столбец идентификатора, вероятно, также будет целочисленным полем, поэтому вы не сильно экономите ...

0 голосов
/ 03 ноября 2011

Не добавляя никакой дополнительной сложности к сайту RockAuto, он, по-видимому, структурирует свое древовидное представление как вариант года изготовления модели, но на самом деле год не имеет никаких атрибутов, ни детей, ни родителей, он больше похож на атрибут модели. .

make - id, name
model - id, make.id, year, name
variant - id, model.id, name

make->model is 1:m
model->variant is 1:m
model->variant is 1:m

Вы можете рассмотреть модель с диапазоном дат, но тогда это применимо и к каждому варианту. Как только вы начнете добавлять дополнительную сложность, вы уменьшите количество VIN-номеров.

0 голосов
/ 03 ноября 2011

на самом деле, если это не домашнее задание (что, я подозреваю, так и есть), я бы использовал какой-нибудь инструмент orm и взял бы результаты (или подстроил их), на самом деле вы могли бы также сделать это с домашним заданием - но я предполагаю, чтов любом случае я бы обманул

Я бы предположил совершенно другое отображение таблиц, предполагая, что похоже @jamieDainton, что вам не хватает сущности, которая связывает все это вместе, как транспортное средство

0 голосов
/ 03 ноября 2011

Я считаю, что у вас есть транспортное средство, составленное из следующих аспектов

Manufacturer
Model Name
Model Variant
Engine
Year

So you'd have the following tables

Manufacturer (ManufacturerID, Name, ParentCompanyID (references ManufacturerID))
Model_Name (Model_NameID, Name)
Model_Variant (Model_VariantID, name)
Engine (EngineID, Name, ManufacturerID) - this is because a vehicle can have an engine by a different manufacturer
Year (YearID, Year)

Vehicle (VehicleID, ManufacturerID, Model_NameID, Model_VariantID, Engine_ID, YearID)

После этого компоненты автомобиля будут помечены как отдельные элементы коллекции, поэтому вы не сможете вставитьавтомобиль дважды.

Пожалуйста, обратите внимание, что это неполные столы, и они просто дают вам представление об идеях.Вероятно, вам следует поставить отметку производителя, если это региональный вариант, чтобы вы могли адекватно различать Ford Focus для продажи в Великобритании и один для продажи в США.

...