首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

今天面试,出了一个数据库结构有关问题的面试题

2012-01-09 
今天面试,出了一个数据库结构问题的面试题有三个表:学生表(学生ID,姓名,)科目表(科目ID,科目名称)成绩表(

今天面试,出了一个数据库结构问题的面试题
有三个表:
学生表(学生ID,姓名,)
科目表(科目ID,科目名称)
成绩表(学生ID,科目ID,成绩)

面试的软件经理问我,以上的表结构存在不合理,需要怎么修改,谢谢大家了


[解决办法]
留下来学习
我没看出来哪里不合理
[解决办法]
学习,不知道,觉得很合理
[解决办法]
面试的软件经理是不是觉得这样的表考虑的太少了,很多字段都没加上去
[解决办法]
学生表(学生ID,姓名,)
科目表(科目ID,科目名称)
成绩表(成绩ID, 学生ID,科目ID,成绩)--(第一个字段为主键)
[解决办法]
最好在成绩表加个考试日期字段
[解决办法]
符合基本的范式规范,不知道他说的不合理指的是不能完成特定的需求,还是什么意思

设置每个表的关键字,创建外键关系
[解决办法]
学生表(学生ID,姓名)
科目表(科目ID,科目名称)
成绩表(学生ID,科目ID,成绩)

例如语文,如果是小学到高中都叫语文。如果这样设计,就不知道成绩具体是哪个年度的语文成绩。
应该在成绩表加年份字段!
[解决办法]

学生表(学生ID,姓名)
科目表(科目ID,科目名称)
成绩表(学生ID,科目ID,成绩,年份)
[解决办法]
成绩表中的 ‘科目ID’貌似不合理。在 表中 好像不能一一对应

[解决办法]
这样解释有点儿牵强。

设计表结构,最主要的是满足业务需求,没有业务需求的支撑,凭空设计表是没有意义的。


成绩表(学生ID,科目ID,成绩)

这样设计最灵活,但实现起来代码可能麻烦些。



[解决办法]
这样设计没有什么问题。
他的解释很不充分,至少我不能认可。

即使涉及实际业务需求,学生表单独存在是不存疑议的。
而科目表因为还与排课,任课教师等相关,也必然要单独维护。
成绩与两基本信息对应也没有问题。



[解决办法]
很显然不必考虑其他字段。
否则,年级、班级、学期、考试类型、考试日期等等很多字段都是要考虑的
[解决办法]
没啥问题。偶觉得。满足3NF.
[解决办法]
个人觉得想要的是第三个表,每个学生一条记录,
学生ID 科目ID 成绩 科目ID 成绩 科目ID 成绩
想要这样的表吧

[解决办法]
学生表(学生ID,姓名,以及学生基本资料。。。。。)
科目表(科目ID,科目名称)
成绩表(学生ID,科目ID,成绩,创建时间,成绩的id,录入人员名称。。。)
[解决办法]
学生表(学生ID,姓名,学生的一些基本信息)
科目表(科目ID,科目名称,科目相关的信息)
成绩表(Id identity,学生ID,科目ID,成绩,时间之类的一些属性)
[解决办法]
没什么问题...
最多就关系表差个主键...


但要说问题... 结合实际的话... 那多的是
什么学生基本信息啊.
科目信息.任课老师
成绩表什么考试时间啊,成绩啊,学期啊...
一大堆...
但是抽象出来
基本上这3个表没什么问题...
[解决办法]
成绩表(学生ID,科目ID,成绩)
对,这样设置在实现代码的方面比较复杂一点

ojuju10(longdchuanren)
成绩表(Id identity,学生ID,科目ID,成绩,时间之类的一些属性)
是个方法。但不能保持表的一致性。
[解决办法]
方案一:
成绩表(学生ID,科目ID,成绩) => 成绩表(成绩ID,成绩)
然後再添加一張關係表 => (学生ID,科目ID,成绩ID)
理由:
對於同樣一門科目,如果考了兩次試,按照 成绩表(学生ID,科目ID,成绩)的設計,各次考試之間先後順序無法確立,故利用成績ID,同一學生的同一科目中成績ID最大的為最新考試成績記錄

方案二:
在成績表中添加一個字段:考試時間,然後把(考試時間,学生ID,科目ID)共同做主鍵,這樣就能區分每次的同科目考試的成績了

根本原因就是(學生ID,科目ID)兩個字段不能明確的區分各次考試成績

------解决方案--------------------


没有发现有异常!!学习学习!
[解决办法]
表的结构是要跟据业务来设计的~~~在这也顶下..呵呵..学习中....
[解决办法]
学习学习!
[解决办法]
没看出什么不孚啊!
[解决办法]
凭空談設計都是不合理的,應該是具體需求具體分析
[解决办法]
科目相对固定,也不是太多,无论是从性能,还是设计上都占优,他说的也没错
[解决办法]
应该有成绩主键
[解决办法]
学习
[解决办法]
发表下个人愚见:
有三个表:
学生表(学生ID,姓名,)
科目表(科目ID,科目名称)
成绩表(学生ID,科目ID,成绩)
好象一般都是这么设计的,

能不能这样
学生表(学生ID,姓名,)
科目表(科目ID,科目名称)
成绩表(成绩ID,成绩)
关联表 (学生ID,科目ID,成绩ID)

这个设计好象有占允余,但对查询来说方便
[解决办法]
学习中...

[解决办法]
学习
[解决办法]
这样设计更符合实际

学生表(学生ID,姓名,)
科目表(科目ID,科目名称)
成绩表(成绩第ID,学生ID,科目ID,成绩,年度,学期)
[解决办法]
学生表(学生ID,姓名)
科目表(科目ID,学生ID,科目名称)
成绩表(科目ID,学生ID,成绩,年度,学期)


个人感觉这样比较合理!科目表得看学生选择了什么课呀!
成绩表和上面的仁兄一样的!

[解决办法]
有三个表:
学生表(学生ID,姓名,)
科目表(科目ID,科目名称)
成绩表(学生ID,科目ID,成绩)
--》
学生表(学生ID,姓名,)
科目表(科目ID,科目名称)
成绩表(学生ID,科目ID_1,成绩_1,科目ID_2,成绩_2,科目ID_3,成绩_3,科目ID_4,成绩_4)

热点排行