【问题标题】:Database schema design for schedules时间表的数据库模式设计
【发布时间】:2010-09-19 05:38:54
【问题描述】:

我有两个表:Company 和Employees。

我还有一个关系表 Employs,其中包含外键 company_id、employee_id 作为复合主键。注意:员工可以在多家公司工作。

我想要另一个表 EmployeeSchedules,它只包含在公司工作的员工的时间表(company_id:integer,employee_id:integer,start_time:datetime,end_time:datetime)。这最终会显示在某种日历小部件中。

但是,通过这种设计,我必须在应用程序级别验证员工在添加时间表之前确实在公司工作。

我想知道是否有更好的方法可以在数据库级别表示这一点,或者只是坚持在应用程序级别进行验证?例如,如果有办法将 EmployeeSchedules pkey (company_id,employee_id) 与 Employs pkey (company_id,employee_id) 链接起来。欢迎任何其他设计建议!

【问题讨论】:

    标签: database calendar schema entity-relationship


    【解决方案1】:

    我会重新定义架构,并添加另一个表:

    Person(id, name)
    Company(id);
    Employee(id, companyId, personId);
    Schedules(id, employeeId, startTime, endTime);
    

    这意味着员工记录只能绑定到一家公司。但是,一个人可以有多个员工记录。所有“id”列都是唯一的,并且是表的主键。 “companyId”指的是公司表的主键等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多