SQL Server 数据表的设计(外键)

「已注销」 2010-11-10 07:41:45
有一张员工表, 其中有个字段是用来标识员工类型的
如:
普通员工、实习生、外来人员...(共五六种 已固定)

之前设计时将"类型"字段设置为外键, 再加一张表做为主表(只有一个字段)

这样设计合适吗?

有几个问题:
1): 不想用硬编码方式将员工类型编码到程序中
2): 如果将员工类型放在员工表中则至少要保证表中每种类型的员工都存在 [一般无法满足]
2): 如果在表里添加五个"特殊"员工会给查询带来不利

各位有什么好的解决方案? 给说一说

谢了!
...全文
98 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-04-11
  • 打赏
  • 举报
回复
楼上的各位,不好意思啊 直到今天才看到这个帖子。。。
dawugui 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 sherlinlove 的回复:]
有一张员工表, 其中有个字段是用来标识员工类型的
如:
普通员工、实习生、外来人员...(共五六种 已固定)

之前设计时将"类型"字段设置为外键, 再加一张表做为主表(只有一个字段)

这样设计合适吗?

有几个问题:
1): 不想用硬编码方式将员工类型编码到程序中
2): 如果将员工类型放在员工表中则至少要保证表中每种类型的员工都存在 [一般无法满足]
2): 如果在……
[/Quote]

员工表,类型字段存放编号.

另外加个员工类型表
编号,名称
1 普通员工
2 实习生
3 外来人员
....

这样才是合理的设计。
「已注销」 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 js_szy 的回复:]

引用 5 楼 sherlinlove 的回复:
引用 3 楼 fredrickhu 的回复:

这个其实我们可以设计一个中间表来转换下

把两张表的主键都放到这张表里面来 两表互为主外键


哈 不明白您的意思? 能说详细点吗?
简单说,就是把类型表单独做个表
[/Quote]

嗯 我是这样做了 老师说不行
我做的是没有在类型表中添加ID字段而是将"类型"值设置为主键
华夏小卒 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sherlinlove 的回复:]
引用 3 楼 fredrickhu 的回复:

这个其实我们可以设计一个中间表来转换下

把两张表的主键都放到这张表里面来 两表互为主外键


哈 不明白您的意思? 能说详细点吗?
[/Quote]简单说,就是把类型表单独做个表
「已注销」 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fredrickhu 的回复:]

这个其实我们可以设计一个中间表来转换下

把两张表的主键都放到这张表里面来 两表互为主外键
[/Quote]

哈 不明白您的意思? 能说详细点吗?
--小F-- 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fredrickhu 的回复:]
这个其实我们可以设计一个中间表来转换下

把两张表的主键都放到这张表里面来 两表互为主外键
[/Quote]
这样可以转换为一对一 处理起来比较简单 即使是一对多也比多对多处理简单
--小F-- 2010-11-10
  • 打赏
  • 举报
回复
这个其实我们可以设计一个中间表来转换下

把两张表的主键都放到这张表里面来 两表互为主外键
chen8410 2010-11-10
  • 打赏
  • 举报
回复
单独做一个类型表:
包含两个字段:id(编号),name(名称)
然后其他表中有涉及到类型的都外键关联到该表,这样便于维护
王向飞 2010-11-10
  • 打赏
  • 举报
回复
单独做一张字典表不就行了吗?

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧