今天面试,出了一个数据库结构问题的面试题 有三个表:学生表(学生ID,姓名,)科目表(科目ID,科目名称)成绩表(学生ID,科目ID,成绩)面试的软件经理问我,以上的表结构存在不合理,需要怎么修改,谢谢大家了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 学生表(学生ID,姓名,)科目表(科目ID,科目名称)成绩表(成绩ID, 学生ID,科目ID,成绩)--(第一个字段为主键) 学生表(学生ID,姓名)科目表(科目ID,科目名称)成绩表(学生ID,科目ID,成绩)例如语文,如果是小学到高中都叫语文。如果这样设计,就不知道成绩具体是哪个年度的语文成绩。应该在成绩表加年份字段! 学生表(学生ID,姓名)科目表(科目ID,科目名称)成绩表(学生ID,科目ID,成绩,年份) 后来给我提示是,每一个学生中每一个科目都要一条记录,那么M个学生N个科目就要M*N条记录,在性能上不太好 这样解释有点儿牵强。设计表结构,最主要的是满足业务需求,没有业务需求的支撑,凭空设计表是没有意义的。成绩表(学生ID,科目ID,成绩)这样设计最灵活,但实现起来代码可能麻烦些。 学生表(学生ID,姓名,以及学生基本资料。。)科目表(科目ID,科目名称)成绩表(学生ID,科目ID,成绩,创建时间,成绩的id,录入人员名称) 学生表(学生ID,姓名,学生的一些基本信息)科目表(科目ID,科目名称,科目相关的信息)成绩表(Id identity,学生ID,科目ID,成绩,时间之类的一些属性) 成绩表(学生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,科目ID,成绩)--》学生表(学生ID,姓名,)科目表(科目ID,科目名称)成绩表(学生ID,科目ID_1,成绩_1,科目ID_2,成绩_2,科目ID_3,成绩_3,科目ID_4,成绩_4) to enaking我的是oracle DBA在某市高考系统中设计的数据库样例。 成绩表(学生ID,科目ID,成绩) 前两个属性作联合主键最好.. paradox数据库提示[Microsoft][ODBC Paradox Driver]无法从指定的数据表中删除 高分求一个sql语句,紧急! 正常的软件,有几台机软件连接不上sql数据库 我最近在一系统。在建立数据库各表的关系是总是出一些错误提示 请各位SQL高手们帮帮忙 請大家幫忙看一下~ 求助SQLSERVER2008日志文件变大原因? 高手进来看看,遇到面试难题 如何访问、操作同一服务器下其它数据库中内容 sql 分组问题 今天干了件力活,手工写语句来完成数据库同步. SQL2005中,差異備份的數據如何還原?
科目表(科目ID,科目名称)
成绩表(成绩ID, 学生ID,科目ID,成绩)--(第一个字段为主键)
科目表(科目ID,科目名称)
成绩表(学生ID,科目ID,成绩)例如语文,如果是小学到高中都叫语文。如果这样设计,就不知道成绩具体是哪个年度的语文成绩。
应该在成绩表加年份字段!
学生表(学生ID,姓名)
科目表(科目ID,科目名称)
成绩表(学生ID,科目ID,成绩,年份)
成绩表(学生ID,科目ID,成绩)这样设计最灵活,但实现起来代码可能麻烦些。
科目表(科目ID,科目名称)
成绩表(学生ID,科目ID,成绩,创建时间,成绩的id,录入人员名称)
科目表(科目ID,科目名称,科目相关的信息)
成绩表(Id identity,学生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,科目名称)
成绩表(学生ID,科目ID_1,成绩_1,科目ID_2,成绩_2,科目ID_3,成绩_3,科目ID_4,成绩_4)
我的是oracle DBA在某市高考系统中设计的数据库样例。