2015-11-03 46 views
1

说我有几个表,如:基本的SQL表结构

  1. 产品
  2. 员工
  3. 设施
  4. * Schedule_Events

在Schedule_Events表,我会有列start_time,end_time,笔记等...

我的问题是,如果我需要安排员工,产品或设施,那么遵循的适当结构是什么。

若本产品/雇员/设施表直接链接到Schedule_Events ...

如: Schedule_Events(表)

  • Schedule_Event_ID
  • EMPLOYEE_ID
  • PRODUCT_ID
  • Facility_ID

...基本上链接的外键时适用,或者我需要一堆子表...

  • Schedule_Events_Employees
  • Schedule_Events_Facilities
  • Schedule_Events_Products

OR

一个名为Schedule_Event_Items的表,包含所有th e以上...

或其他一些表设计我不考虑?

我很新,在此,任何帮助表示赞赏。

在此先感谢!

+0

它们应该直接与外键链接到三个表中的每一个。跟创建构成同一个事物的三张不同表格相比,要容易得多。 – Siyual

+0

你应该有更多的表格。'Events'' EventSchedules'' ProductEventSchedules''EmployeeEventSchedules'' FacilityEventSchedules' – JamieD77

回答

0

如果某些记录是一对多的话,第一条建议将不起作用。如果更多的员工可以与事件相关联,那么设计是有缺陷的,不能使用。

解决这个问题的标准方法是使用链接表(Schedule_Events_Employees,Schedule_Events_Facilities,Schedule_Events_Products),这样您就可以拥有多对多的关系,这就是数据可能要求的关系。你可以把它们全部放在一张表中,并为这个类型添加一个列,但是然后你失去了FK的权力,并且你最终还是加入到这张表中3次以获得所有数据。所以第三种可能性没有优势。