其实还是一个数据库设计的问题:会议记录。我想一般设计应该如下,涉及这么几个表:
T1:会议记录表
会议时间,员工编码
T2:员工编码表
员工编码,部门编码,员工姓名
T3: 部门编码表
部门编码,部门名称
最终对用户的显示为:会议时间,员工姓名,部门名称。现在问题来了:张三在第一年参加了一次会议,当时属于财务部,那么在会议记录表对用户的显示中应该显示为:2007,张三,财务部
第二年张三又去了办公室,当然需要在员工编码表中修改其部门编码,那么此时再显示去年那次会议,就成了:2007,张三,办公室
这就不对了,虽然张三此时属于办公室,但在开会的时候是属于财务部的。
当然可以在会议记录表中增加‘部门名称’字段,但这样似乎就比较冗余了,
还有其他的解决办法吗,大家讨论讨论,全当消遣:)
T1:会议记录表
会议时间,员工编码
T2:员工编码表
员工编码,部门编码,员工姓名
T3: 部门编码表
部门编码,部门名称
最终对用户的显示为:会议时间,员工姓名,部门名称。现在问题来了:张三在第一年参加了一次会议,当时属于财务部,那么在会议记录表对用户的显示中应该显示为:2007,张三,财务部
第二年张三又去了办公室,当然需要在员工编码表中修改其部门编码,那么此时再显示去年那次会议,就成了:2007,张三,办公室
这就不对了,虽然张三此时属于办公室,但在开会的时候是属于财务部的。
当然可以在会议记录表中增加‘部门名称’字段,但这样似乎就比较冗余了,
还有其他的解决办法吗,大家讨论讨论,全当消遣:)
解决方案 »
- 在访问数据库时加了个timer,很简单的代码就是找不出错误在哪里,请高手指点指点!感激!!!
- 问个关于指针的有点难度的问题。
- 请问:怎样将ttreeview类带子节点的节点添加到另一个treeview中?
- 如何获取当前窗口鼠标点击选中的文件路径
- bde+sql server2000不能增加问题!!!
- 杭州有没有招程序员的公司
- 女朋友走了,开始做代理服务器的软件的,哪位兄弟做过,进来讨论吧
- 询问此语句的含义
- 请教:DELPI的TABLE中如何按记录号范围删除记录
- 有谁知道Borland的新闻组的地址?
- TSocketConnection 和 office 问题
- 关于调用程序响应自动化事件请教高手
也说的太搞了吧,如果按照你说的这样做的话,到时候写的那个复杂的sql(要根据时间来做判断,如果有个人没事总换部门的话,你岂不是要写的累死)耗费的性能还不如加那个冗余的字段。不知道楼主凭什么标准来说某个字段是否是冗余字段,其实设计数据库,不是只针对一个操作来说的,是针对所有的操作查询的一个平衡来设计的,如果查询超快,保存超慢,数据还是设计失败。
会使会议记录表达到3NF但不满足BCNF到底要达到哪种范式,得看设计者意愿
一般都会建议至少达到3NF可以考虑两种做法一是把会议记录表拆成两个表:T1-1:会议记录ID,部门编码,会议时间
T1-2:会议记录ID,员工编码二是像火龍说的那样,新建一张员工所属部门表
T4:员工部门ID,员工编码,部门编码
T1: 会议记录ID,员工部门ID,会议时间
会议时间,员工编码
T2:员工编码表
员工编码,部门编码,员工姓名
T3: 部门编码表
部门编码,部门名称
最终对用户的显示为:会议时间,员工姓名,部门名称。T4: 会议签到表
会议时间,员工编码,部门ID
增加一个 部门调动记录表
员工ID 原部门ID 新部门ID 时间
生成报表的时候关联这个表 来取当时的部门
其他如职位 职务也可以这样处理
会议时间,员工编码
T2:员工编码表
员工编码,部门编码,员工姓名 可在T1表中增加 会议时部门编码.