将多值依赖项放在自己的表中但感到困惑

问题描述 投票:1回答:1

我在BCNF有一个表,我需要找到多值依赖项,但我不确定我是否创建了提供合理信息的新表。

我有一个员工表,项目表和emp_work表。 BCNF中的表名为Emp_Work,我正在使用EmpID,ProjName和WrkDate的复合主键。该表显示了可以在不同时间在不同时间处理不同项目的员工。

Emp_Work (EmpID, ProjName, WrkDate, WrkHrs)

4NF表:

EmployeeProj (EmpID, ProjName)

EmplopyeeWkDates (EmpID, WrkDate)

EmployeeHrs (EmpId, WrkHrs)

它是否正确?看看新表,我没有看到真实的信息图片。例如,员工在不同时间在多天工作特定项目,但现在创建表的方式我没有看到信息的真实情况。 EmployeeHrs给了我员工和他们工作的时间,但不知道小时的相关日期和与小时相关的项目让我感到困惑。我是否错误地识别了多值依赖项?我是新来的,所以我需要一些帮助。

sql
1个回答
0
投票
Emp_Work (id, Emp_projectId, employeeId, start_date_with_hour, end_date_with_hour)

您不需要为小时和日期创建表,您可以将其存储在一个表中

视觉范例

id, emp_projectId, employeeId, start_date_with_hour, end_date_with_hour
1, 1, 1, 21-04-2019 13:00, 21-04-2019 17:00
2, 1, 1, 22-04-2019 13:00, 22-04-2019 19:00 

Employee1 started to working at 21-04-2019 13:00 and finished work at 21-04-2019 17:00 for project1

Employee1 started to working at 22-04-2019 13:00 and finished work at 22-04-2019 19:00 for project1

示例sql代码

Get how many hours worked at date
Select *, datediff(hour,end_date_with_hour, start_date_with_hour) as workHour from emp_work where EmployeeId = 1 and emp_projectId = 1 

Result : 

1, 1, 1, 21-04-2019 13:00, 21-04-2019 17:00, 4
2, 1, 1, 22-04-2019 13:00, 22-04-2019 19:00, 6
© www.soinside.com 2019 - 2024. All rights reserved.