日期:2014-05-17  浏览次数:20646 次

数据库表关系设计到底如何做最好!(简单关系)
本帖最后由 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