欢迎来到天天文库
浏览记录
ID:50840391
大小:40.45 KB
页数:3页
时间:2020-03-15
《数据库主从表主键外键知识.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、A表的主键在B表中充当外键,谁是主表,谁是子表?A为主表B为从表个人认为:外键是约束的一种。不存在主从关系,只存在引用关系,如部门表与员工表。每个员工都属于某个部门,必须与某个部门资料对应。主从表的情况:类似于订单表与订单明细表的关系。希望以上有所帮助.有两个表A表中的C字段里面的内容是B表中的主键,并且值有多个,请问数据库该怎么设计啊?createtableB(Cchar(6)primarykey,C_Namevarchar(50)notnull)gocreatetableA(A_IDchar(6)primarykey,A_Namevarchar(100)no
2、tnull,Cchar(6)referencesB(C) --将A表中C字段设置外键)go从表的外键与主表的主键的列名必须相同吗?值呢?列名不一定要相同,但是外键的取值要么从主键的域中取要么取空值,这在数据库中叫做参照完整性规则。 主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。
3、主键: 关系数据库依赖于主键---它是数据库物理模式的基石。主键在物理层面上只有两个用途: 1.惟一地标识一行。 2.作为一个可以被外键有效引用的对象。 基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则: 1.主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。 2.主键应该是单列的,以便提高连接和筛选操作的效率。 注:使用复合键的人通常有两个理由为自己开脱,而这两个理由都是错误的。其一是主键应当具有实际意义
4、,然而,让主键具有意义只不过是给人为地破坏数据库提供了方便。其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键,我也反对这种做法,理由是:复合主键常常导致不良的外键,即当连接表成为另一个从表的主表,而依据上面的第二种方法成为这个表主键的一部分,然,这个表又有可能再成为其它从表的主表,其主键又有可能成了其它从表主键的一部分,如此传递下去,越靠后的从表,其主键将会包含越多的列了。 3.永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义
5、的原则被违反了。 注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。 4.主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。 5.主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中所谓外键:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的联系
6、。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。至于主键:主关键字是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。如上可知:若name是表B的主键,由于name还是表A的外键。由上面的定义可知表B是表A的主表,表A则是表B的从表,外键是该表是另一个表之间联接的字段外键必须为另一个表中的主键外键的用途是确保数据的完整性。它通常包括以下几种:实体完整性,确保每个实体是唯一的(通过主键来实施)域完整性,确保属性值只从一套特定可选的集合里选择关联完整性,确保每个外键或是NULL(如果允许的话)或
7、含有与相关主键值相配的值例子:表A字典表,表B业务表。外键应建立在表B上。1、表B的字典项目的代码只能是表A中代码内容。2、表B可以无条件删除记录。3、表A在删除的时候,将根据外键的规则,判断表B中是否使用了要删除数据的代码,如果有引用,则不能删除。ORACLE如何建立表外键例:学生表student(id,name,sex)成绩表score(id,math)如何创建表,要求有主键,有约束解:CREATETABLESTUDENT(IDCHAR(10),NAMEVARCHAR(8),SEXCHAR(1));ALTERTABLESTUDENTADDCONSTRAINT
8、PK_STUDENTPR
此文档下载收益归作者所有