数据库架构

时间:2015-06-25 09:12:00

标签: sql database database-schema

我有两个实体Office&员工和我想为WorkingHours设计数据库的模式。有办公室为员工提供默认的工作时间,但有些员工可能有不同的工作时间。

建模的最佳方法是什么?我在两个表中都有工作时间吗?

4 个答案:

答案 0 :(得分:3)

您可以做的是创建一个类似于下面的模式。当然,如果有任何数据,则需要添加其他列以保存其他数据,并使用特定于您正在使用的RDBMS的数据类型调整查询。

comments

另外,不要忘记在每个表中的唯一列上实现约束和主键。

CREATE TABLE Office(OfficeID integer , OfficeName VARCHAR(10)) CREATE TABLE Employee(EmployeeID integer , EmployeeName VARCHAR(10) , OfficeID integer , WorkingHoursID integer , UseOfficeDefaultWorkingHours Boolean) CREATE TABLE WorkingHours(ID integer , StartTime TIME , EndTime TIME , OfficeID integer , OfficeDefaultWorkingHours Boolean) 表格中添加一列,以指定员工是否在默认办公室工作时间(Employee)下工作。

UseOfficeDefaultWorkingHours表格中添加一列,以指定该行是否包含办公室的默认工作时间,并借助其他布尔列,在本例中为WorkingHours

您可以查询此架构,以获得员工的工作时间,其查询类似于下面的查询:

OfficeDefaultWorkingHours

此查询将在SQL Server RDBMS下运行,但我不确定它是否适用于其他RDBMS产品,您可能需要相应地进行调整。

答案 1 :(得分:2)

你可以做一件事就是创建新表WorkingHours,因为它独立于员工

Working hours 

Id  Working Hours
1     10 - 8
2     12- 9

将id值分配给员工表

Employee

ID WorkingHoursID
1     2
2     2
3     1

答案 2 :(得分:0)

WorkingHours将是一个不同的实体。

办公室有一个默认工作时间(或者可能超过一个?)。 员工有一个工作小时。员工的工作时间数据来自员工办公室的工作时间。员工的工作时间可以在不改变办公室工作时间的情况下改变。

答案 3 :(得分:0)

创建三个表
      1.办公室:这应该是办公地点,名称和自己的身份证明       2.时间表:ID,OfficeID,TimeSLot
      3.员工:在此表中创建一个列OfficeID,并从他或她正在工作的办公室表中传递办公室ID,其他列使用TimeslotID并传递第二个表的ID。

例如:EmpID,OfficeID,TimeSLotID