数据库设计的问题

snfeng 2008-03-21 10:23:36
经常看到书上这样设计一个关系模式,如下:
学生(学号,姓名,性别,专业号) 其中“学号”为主键 “专业号”为外键
专业(专业号,专业名称) 其中“专业号”为主键
这样设计的话,对学生表进行插入的时候,我要分别输入学号,姓名,性别,和专业号,而“专业号”很多人不清楚,不如“专业名称”熟悉,或者说不如让用户直接输入“专业名称”而不是“专业号” 那么关系模式就要修改成下面的样子:
学生(学号,姓名,性别,专业名称)(“专业名称”在同一所学校肯定没重复)
这样用户更好理解
可为什么书上不这样写呢?请帮忙,谢谢!!
...全文
48 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
snfeng 2008-03-22
刚去揭贴了,出了点问题,改天再接
回复
snfeng 2008-03-22
明白了,谢谢各位,马上揭贴
回复
小小的蚂蚁 2008-03-21
我同意 3 楼的说法
回复
zbc1009 2008-03-21
估计你没系统学过数据库,别骂我哦,我的感觉。。。
给你个链接,里面讲的比较清楚
(网上找的)
http://hi.baidu.com/shmilyqlc/blog/item/d1ee350edfae30c97acbe14a.html
回复
dawugui 2008-03-21
[Quote=引用楼主 snfeng 的帖子:]
经常看到书上这样设计一个关系模式,如下:
学生(学号,姓名,性别,专业号) 其中“学号”为主键 “专业号”为外键
专业(专业号,专业名称) 其中“专业号”为主键
这样设计的话,对学生表进行插入的时候,我要分别输入学号,姓名,性别,和专业号,而“专业号”很多人不清楚,不如“专业名称”熟悉,或者说不如让用户直接输入“专业名称”而不是“专业号” 那么关系模式就要修改成下面的样子:
学生(…
[/Quote]

学生(学号,姓名,性别,专业号) 其中“学号”为主键 “专业号”为外键
专业(专业号,专业名称) 其中“专业号”为主键
这种模式是主流设计方法.

-------------------------------------------------------------
这样设计的话,对学生表进行插入的时候,我要分别输入学号,姓名,性别,和专业号,而“专业号”很多人不清楚,不如“专业名称”熟悉,或者说不如让用户直接输入“专业名称”而不是“专业号” 那么关系模式就要修改成下面的样子:
学生(学号,姓名,性别,专业名称)(“专业名称”在同一所学校肯定没重复)
这样用户更好理解

如果要更改某个专业名称,如"计算机管理"改为"计算机应用".
那么你这个表的所有计算机管理都要改.

而采取第一种模式,则只需要改专业表里面的专业名称为"计算机管理"为"计算机应用"即可.
回复
hui_hui_2007 2008-03-21
当然了,前台程序中,用户选择的是名称,但是保存时却要存入这个名称对应的编码.
用编码才规范呀.你想想,为什么会计制度要设会计科目,是数字编码,而不是名称.
回复
hui_hui_2007 2008-03-21
外键必须是编码,而不是名称.
回复
kelph 2008-03-21
比如说使用一个下拉选择框,下拉中是专业的名称列表或编号+名称列表
用户下拉选择了数学专业,但数据库中保存的是数学专业对应的编号
回复
liangCK 2008-03-21
输入学号,姓名,性别,和专业号,而“专业号”很多人不清楚,不如“专业名称”熟悉
-----------
这个号码..不是你输入的..
是在前台程序中..当你选择了专业名称之后..自动搜索出来的..
回复
liangCK 2008-03-21
不符号规范化.
回复
liangCK 2008-03-21
这样是更好理解..但存在冗余..
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-21 10:23
社区公告
暂无公告