您好、欢迎来到现金彩票网!
当前位置:PC蛋蛋 > 约束条件 >

SQL完整性约束条件中的主键、外键约束是什么意思

发布时间:2019-07-04 02:25 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  在这个表里, 班级为01的记录中, 年级却有两个2年级和1年级, 这就是冗余代来的问题了, 尽管可以通过对输入的控制来避免这样的情况, 但由于逻辑上的问题往往使处理程序很复杂, 又很容易造成BUG, 比如由于某种疏忽而出现上述情况,而使用这些数据的处理, 就极有可能出现错误,.

  那么, 怎样避免呢, 观察上面几个字段, 就不难发现年级对班级有依赖性, 换句话说, 只需知道班级就能知道年级了, 所以可以把表拆成这个样子

  这样逻辑上就清晰了, 因为没了冗余, 对输入的控制就简单了, 因为, 如果有疏忽, 就会引起错误, 而一旦写到表里, 这样的数据就肯定是完整的, 从而避免了很多后期处理上出现BUG的可能性

  现在来看看 上面的设计, 在这里偶要利用这个机会来说明一下, 数据库的设计思路.

  这样很容易引起新的问题, 比如编号作为主键它的值如何确定的问题(这很重要, 如果处理不当就会发生逻辑上的错误). 在初期设计中, 应当特别注意这些问题, 不要任意追加实际上不存在的字段, 这样才能保证设计的严密性, 当然, 在处理中使用数字类型来保证处理的效率等问题是要考虑的, 不过这应该放在后面, 等到系统的基本逻辑完全确定了, 再做调整. 这样一个过程, 就是从物理设计到逻辑设计的过程,

  在这里所谓物理设计, 就是完全按照实际的情况, 做出的数据库结构设计和处理逻辑设计. 在这一阶段完全不需要考虑, 和数据库库应用有关的问题, 是纯粹的现实的反映. 这一阶段的原则是, 原原本本反映出现实的情况, 特别是要明确界定系统和用户之间的分界点.

  而所谓逻辑设计, 就是要把上面抽象好的物理设计进行优化, 作出高效益的数据库结构和系统处理流程, 并追加必要的逻辑字段如上面的编号和这些字段处理方法, 这时候的原则是, 完全反映物理逻辑并保持物理设计中已经确定的用户界面

  而在逻辑设计阶段, 偶们注意到, 实际上用户对班级名称有很多种不同的叫法, 直接作主键计算机处理起来比较难

  但是这样用户在输入数据的时候, 就必须要明白班级编号的意思, 这不符合偶们所设计的物理界面的要求, 所以要再改进

  偶们增加了表d这是一个字典, 它的作用是可以让用户输入班级名而系统可以找到对应的编号, 请注意, 在d中的编号不是外键, 因为它和偶们的主处理逻辑没有直接关系, 它只是个辅助表, 另外, c中保留了班级字段, 但这不是冗余, 这个班级和d的班级是两个概念, 前者是班级的表示名称, 而后者是班级的输入名称

  最后, 要说明的是, 偶们的最终设计, 仍然犯了个错误, 这就是, 偶们增加了一个新物理流程-字典编辑, 这时候, 偶们需要和用户共同讨论, 看看他们是否真得愿意这么使用, 而通常的结果会是,

  他们不打算用这个字典, 他们完全能够使用标准输入名称, 于是偶们的字典里就只能保存一个名称了, 显然然偶们可以去掉这个表, 但用户的保证是不可信的, 偶们不能允许在他们犯错误的情况下, 而使得系统可能保存错误的结果, 于是偶们再行调整偶们的设计方案

  这个最终方案是这个意思, 因为偶们不信任用户, 所以偶们仍然不能使用班级作为主键, 这样即使用户输入有误也不会增加错误的记录, 根据物理逻辑的要求, 偶们把班级作为候补主键, 使它不能为空而且不能重复, 这样就基本上满足要求了, 显然编号成为了内部逻辑字段, 它可以完全由偶们的系统自行决定

http://beckymotew.com/yueshutiaojian/183.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有