数据库表关系设计到底如何做最好!(简单关系)
本帖最后由 pfworld 于 2012-10-27 20:30:04 编辑
例如:
我要建立一个人员表这个人员拥有手机,以后可能还会有2部、3部....。我在查询时会一次列出人员资料和人员包含的手机型号、电话号码等信息。后期我还想扩展到了解人员拥有电脑的情况,还可能扩展人员拥有子女的情况(基本资料不和人员信息相同)。
人员表
---------
ID name
1 张三
2 李四
3 王武
手机表
---------
ID device tel
1 中兴 13329321111
2 联想 15123121111
3 中兴 19283828233
4 中兴 13923424234
电脑表
--------
ID computer
1 联想
2 IBM
3 长城
.....
要查询的结果:
姓名 电话号码 电脑品牌
--------------------------------------------------
张三 13329321111 联想、IBM
李四 15123121111、19283828233 <无>
王武 13923424234 长城
那么这个表关系如何建立呢?以后在扩展也不是太麻烦?
目前是我的方案:
手机表
---------
ID 主ID device tel
1 1 中兴 13329321111
2 2 联想 15123121111
3 2 中兴 19283828233
4 3 中兴 13923424234
电脑表
--------
ID 主ID computer
1 1 联想
2 1 IBM
3 3 长城
就是给每一个子表添加一个主表外键进行关联。
------最佳解决方案--------------------如果人员将来电子产品会很多的话(如果电子成品不多就可以按你上面的方式设计) 个人认为,可以参考下面方式设计
人员表
---------
编号 名称
1 张三
2 李四
3 王武
电子产品表
---------
编号 名称
1 手机
2 电脑
电子产品类别表 --'产品编号' 为 电子产品表(编号)外键
---------
编号 产品编号 名称
1 1 中兴
2 1 联想
3 2 惠普
4 2 IBM
5 2 长城
人员电子产品表 --1.'员工编号' 为 人员表(编号)外键 2.'产品类别编号' 为 电子产品类别表(编号)的外键
---------
编号 员工编号 产品类别编号 描述(手机号、或电脑型号)
1 1 2 13329321111
2 1 4 IBM电脑
3 2 1 15123121111
4 2 1 19283828233
------其他解决方案--------------------你的想法没有什么问题,约束性比较强而已。
比如人员表,你可以把人员的具体信息都放在里面,人员可以有姓名,有手机,有电脑,那么从E-R图就可以得出,姓名,手机,电脑等字段是属于人员的,那么就可以建立最基本的人员表,如下:
人员表
---------
ID name phone pc
1 张三 A1 B1
2 李四 A2 B2
3 王武 &nbs