日期:2014-05-18  浏览次数:20468 次

稍大的数据库结构中,需要建立关系吗
例如一套OA系统,有300多张表,各位觉得有必要在表与表之间建立物理关系吗?
例如:
学生成绩表:
id       studentid       subjectid           score
1               24                   2                   80
2               24                   3                   65

学科表:
subjectid               name
  1                             语文
  2                             数学
  3                             英语


这两个表,学生成绩表的subjectid应该和学科表的subjectid建立关系吗?studentid应该和学生主表建立关系吗?还是说有逻辑上的关系就可以了而不必建立物理上的关系?

各位在比较庞大的系统中建表的时候,都会建立表和表之间的关系的吗?

------解决方案--------------------
我建议表之间要有逻辑上的主外键关系,不要物理上的关系,影响性能~
------解决方案--------------------
建立关系,主要是有些地方要用到级联更新,就不用通过程序更新
------解决方案--------------------
请使用外键把各个相关联的表联系起来,这才是关系数据库所应体现的。
------解决方案--------------------
关系是用来进行数据完整性约束的,通常非常必要,尤其是强制关系.
关系的好处是由SQLSERVER系统自动维护(更新,删除),但表间关系比较复杂时,SQLSERVER2000在处理强制关系间的级联更新或级联删除时有很大的问题,容易导致级联路径循环或级联路径不唯一错误,使数据无法修改,非常令人头疼,如果出现了这种情况(与具体业务逻辑有关),就不能强制关系,只能使用触发器来维护关系表间的数据完整性,那样的话好日子就到头了^^.
------解决方案--------------------
偶来学习...
------解决方案--------------------
个人认为用触发器处理好一些。
------解决方案--------------------
A表中有Aid作为主键的话,B表中可以有Aid字段,作为外键
------解决方案--------------------
办工自动化,个人觉的使用逻辑关联好些.表多了,查错都难.
------解决方案--------------------
SQL:关系型数据库
------解决方案--------------------
表多也没关系,主要的要了解业务流程,在设计数据库的时把各个业务分块,再把各业务间进行关联。100张表以上没有统一的数据库设计规范要求,会给开发和后期的维护工作带来巨大的压力。



------解决方案--------------------
能少联系就尽量少联系,
------解决方案--------------------
数据库通过外键相关联,可以用触发器来维护表的一致性!
------解决方案--------------------
只要建立基本的主外键的关系就可以了,在程序的使用的需要涉及到一些级联更新的操作
------解决方案--------------------
不管數據庫大小,我想都有必要考慮三範式的規範設計
------解决方案--------------------
建立关系是必要的.不过小系统通常都不建.由程序控制,那样最灵活.