Поместить объект в иерархию или как атрибут с таблицей поиска?

0

Позвольте сказать, что моя компания производит медицинские изделия, эти продукты используются во многих различных лабораторных испытательных приборах. Иерархия бизнес-логики выглядит следующим образом:

A lab has multiple locations (Up to thousands)
A location has multiple departments (Chemistry, Hematology, 3-5 per location)
A department has multiple instruments (No more than 10-20 instruments per location)
An instrument has many products.(No more than 1-5 product types per instrument)

Структура таблицы в настоящее время отражает бизнес-логику, как показано слева. Я предложил внести небольшое изменение, показанное справа.

Изображение 174551

Каковы некоторые плюсы и минусы каждого подхода? Я чувствую, как боковой подход левой может быть немного медленнее из - за цепочки так много Joins подряд.

  • 0
    Трудно судить о схеме, не зная SELECTs которые будут использоваться. И иногда написание SELECT указывает на ошибку в схеме.
Теги:
database-design
relational-database

1 ответ

1
Лучший ответ

Самый большой "кон" я вижу, что подход с правой стороны заключается в том, что вы теряете связь между Департаментом и Местом. Для отношений, которые вы описали на своем посту, структура слева корректна с точки зрения дизайна.

ТЕМ НЕ МЕНИЕ...

Дизайн, который у вас есть, означает, что Масс-спектрометр на вашем объекте в Сан-Антонио будет иметь другой идентификатор, чем тот, который находится на вашем объекте в Денвере. Это предназначено?

------------------ пересмотр после обсуждения в комментариях ------------------

Вы описали пару отношений "многие-ко-многим" - местоположение будет иметь несколько инструментов, и несколько мест могут иметь один и тот же инструмент (например, масс-спектрометр). Чтобы поддержать это, вам понадобятся таблицы перекрестных ссылок. Вот исходный эскиз. Мой стандарт заключается в вызове первичного ключа таблицы "ID", и любое поле под названием "[имя-таблицы] _ID" является внешним ключом к соответствующей таблице:

Lab
    ID
    Name

Location
    ID
    Lab_ID
    Street_Address
    City
    etc.

Department
    ID
    Name

Location_Department    -- this lists the departments at a given location
    ID
    Department_ID
    Location_ID

Instrument        -- Scale, Oscilloscope, Mass Spectrometer, etc.
    ID
    Name
    Description

Location_Department_Instrument    -- inventory at a given location
    Location_Department_ID
    Instrument_ID
    Instrument_Serial_Number

Дайте мне знать, если это имеет смысл.

  • 0
    Масс-спектрометр в Сан-Антонио должен иметь тот же инструмент_ид, что и в Пало-Альто, но с другим идентификатором ПК. Есть что-то еще, что я должен изменить? Кроме того, имеет ли значение потеря отношений между отделом и местом нахождения? У большинства лабораторий есть те же самые отделы. В том же смысле, что в большинстве компаний есть отдел кадров, финансовый отдел и т. Д.
  • 0
    Аааа - я думаю, что вижу, что ты пытаешься сделать. Дайте мне несколько минут, и я обновлю свой основной ответ парой мыслей.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню