计划的数据库模式设计

时间:2010-09-19 05:38:54

标签: database calendar schema entity-relationship

我有两张桌子:公司和员工。

我还有一个关系表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)链接起来。欢迎任何其他设计建议!

1 个答案:

答案 0 :(得分:4)

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

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

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