稍大的数据库结构中,需要建立关系吗
例如一套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张表以上没有统一的数据库设计规范要求,会给开发和后期的维护工作带来巨大的压力。
------解决方案--------------------能少联系就尽量少联系,
------解决方案--------------------数据库通过外键相关联,可以用触发器来维护表的一致性!
------解决方案--------------------只要建立基本的主外键的关系就可以了,在程序的使用的需要涉及到一些级联更新的操作
------解决方案--------------------不管數據庫大小,我想都有必要考慮三範式的規範設計
------解决方案--------------------建立关系是必要的.不过小系统通常都不建.由程序控制,那样最灵活.