数据库表关系设计到底如何做最好!(简单关系)
本帖最后由 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 1213329321111
2 14IBM电脑
3 2115123121111
4 2119283828233
---------
接下来再依次建立手机表,电脑表等等,建立主键外键约束,比如再上面的基础上建立手机表:
--------
手机ID 手机名字
A1 HTC
A2 IPHONE
A3 ZTC
--------
这样你要是查询的时候就方便多了,比如要查询李四的手机是什么牌子的:
select 手机名字 from 人员表,手机表 where 人员表.name='李四' and 人员表.phone=手机表.手机ID
[其他解释]
人员表
-------
ID name
1 张三
2 李四
3 王武
手机型号表
---------
ID device
1 中兴
2 联想
电脑表
-----------
ID computer
1 联想
2 IBM
3 长城
人员_手机
-----------------------------------
ID人员ID手机型號IDtel
11113329321111
22215123121111
32119283828233
43113923424234
人员_电脑
------------------
ID人员ID电脑ID
111
212
333