首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在确定主键时,是否可以使用DateTime字段的日期部分

在确定主键时,是否可以使用DateTime字段的日期部分
EN

Software Engineering用户
提问于 2014-06-22 19:11:51
回答 1查看 17.7K关注 0票数 4

我正在设计一个工资系统,我设计了一个有几个表的数据库,这个问题与下面的表格有关

EMPLOYEE (Employee_ID [pk], Name,... etc) LOCATION (Location_ID [pk], Name, Address, ...etc)

这两个表具有多到多个关系,因为一名员工可以在多个地点工作,而在一个地点,多名员工正在工作。

这两个表是通过ATTENDANCE表关联的。

ATTENDANCE (Employee_ID, Location_ID, Shift_Type, In, Out)

Shift类型要么是"Day“,要么是”黑夜“,"In”/ "Out“字段是DateTime字段。shift类型是根据" in“字段中的日期确定的。例如,如果员工的In字段是-06/22/2014 07:30:00 PM,那么shift类型是Night,shift属于22/06/2014。(他的Out时间是23/06/2014 07:30AM,那是在第二天)

条件是,员工不能在同一天工作两次,甚至在两个地点。但是员工可以白天在一个地方工作,晚上在另一个地方工作。

我最初的主键选择考勤表是(Employee_ID + In),但这是错误的,因为如果In时间在两次情况下略有不同,员工可以在同一天工作同一班。

所以现在我知道主键应该是一些类似于(Employee_ID + Shift_Type + Shift_Date)的东西。但问题是我在出勤表中没有日期字段。但是我有In字段,它是DateTime字段。

我对这个问题的理解是正确的.

我的问题是,如果在考勤表中添加另一个字段为Shift_Date,那么在为该表创建一个PRIMARY KEY时,是否有可能获得字段In的日期部分?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2014-06-22 19:25:50

您可以使用日期字段作为主键,但不能在字段的一部分上键入。你得用日期做一个单独的字段。

这种特殊情况通常不是通过将其构建到表的主键中来实现的。你的“员工不能在同一天工作两次,甚至在两个地点工作”是一条商业规则,不一定永远都是一样的。(天知道,外面有太多地方让他们的员工分班.)处理这个问题的一个更典型的方法是为主键生成一个自动递增字段,然后在更靠近用户界面的地方强制执行业务规则。

票数 8
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/245720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档