2015-11-03 2 views
1

Скажем, у меня есть несколько таблиц, таких как:Basic SQL структура таблицы

  1. Продукты
  2. Сотрудники
  3. Услуги
  4. * Schedule_Events

В таблице Schedule_Events, я бы имеют столбцы для start_time, end_time, примечания и т. д.

Мой вопрос: если мне нужно наметить сотрудников, продукты или объекты, какова надлежащая структура.

В случае если работник// таблицы объекта Product Link непосредственно Schedule_Events ...

, такие как: Schedule_Events (таблица)

  • Schedule_Event_ID
  • EMPLOYEE_ID
  • PRODUCT_ID
  • Facility_ID

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

  • Schedule_Events_Employees
  • Schedule_Events_Facilities
  • Schedule_Events_Products

ИЛИ

таблица, называемая Schedule_Event_Items, которая содержит все e выше ...

Или какой-либо другой дизайн стола, который я не рассматриваю?

Я довольно новичок в этом, любая помощь оценивается.

Заранее благодарен!

+0

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

+0

, вероятно, у вас должно быть несколько таблиц .. 'События'' EventSchedules'' ProductEventSchedules'' EmployeeEventSchedules'' FacilityEventSchedules' – JamieD77

ответ

0

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

Стандартный способ решить эту проблему с помощью таблиц связывания (Schedule_Events_Employees, Schedule_Events_Facilities, Schedule_Events_Products), чтобы вы могли иметь много-много отношений, которые, по-видимому, требуют данные. Вы можете поместить их все в одну таблицу и добавить столбец для своего типа, но затем вы потеряете силу FK, и вы все равно в конечном итоге присоединяетесь к этой таблице 3 раза, чтобы получить все данные. Таким образом, нет никакой пользы для третьей возможности.

Смежные вопросы