zoukankan      html  css  js  c++  java
  • 数据库原理--外键和主键

    在关系型数据库中,数据结构有逻辑结构和物理结构。物理结构指存储在物理介质上的数据文件的结构。逻辑结构即关系,也就是一张张的二维表。表中的一列即为一个字段(属性),代表的是实体的一个属性。表中的一行即为一条记录。如:学生表中(学号,姓名,年龄,性别),在该表中有4个字段,代表学生实体的4个属性。表中的一行数据(001,张三,男,20),即一条记录,表示的是张三这个学生的信息。

    在表中,用来唯一标识一条记录的字段集,叫做主关键字或者主关键码,简称主键(主码),而主键包含的属性(字段)叫做主属性,其他的则为非主属性。

    在这里说明一下,既然是“字段集”,那么主键就可能是一个字段或者多个字段。例如上面的学生表,用下划线表示的学号,就是能唯一标识一个学生的字段,学号字段就是该表的主键。由于学生的姓名重名是不可避免的,所以一般不用姓名来作为唯一标识一个学生的主键。

    再举个例子说明一下多个字段作为主键。例如学生选课表(学号,课程号,成绩),在学生选课表中,主关键字是(学号,课程号)。原因显而易见,一个学生可以选择多门课程,一个课程可以被多个学生选择。如果单单是用学号或者课程号,都不足以唯一标识一条记录。

    对于外键的理解,在这里我也举个例子。假设有两个表,学生表(学号,姓名,年龄,性别,专业编号),专业信息表(专业编号,专业名称,专业备注信息)。学生表中主键是学号,专业信息表中主键是专业编号。学生表中的非主属性专业编号恰好是专业信息表中的主键。我们就称这个专业编号是学生表的外键。像这样,一个表的非主属性是另一个表的主属性,该非主属性就是外键。

    数据库的约束有三种,实体完整性约束、参照完整性约束和用户自定义约束。

    1.实体完整性约束指的是主键不能为空,如果主键为空了还怎么唯一标识一条记录。

    2.参照完整性约束,即外键的约束,某一外键的值必须在它引用的主键字段中存在。如,学生表中专业编号属性的值,必须都存于专业信息表中的专业编号属性中。想一想也就明白了,一个学生(大学生)怎么可能属于一个不存在的专业。

    3.用户自定义完整性约束,指的是一些用户自己设定的约束,例如字段是否可以为空,字段值的取值范围(如:人的性别只能取男、女)。

  • 相关阅读:
    HDU5343:MZL's Circle Zhou(SAM,记忆化搜索DP)
    动归皆背包——那些做过的背包
    CODEVS 3943 数学奇才琪露诺
    codevs 1540 银河英雄传说
    CODEVS 1004四子连棋
    洛谷1082 同余方程
    洛谷1006 传纸条
    洛谷1508 Likecloud-吃、吃、吃
    洛谷1108 低价购买
    洛谷1156 垃圾陷阱
  • 原文地址:https://www.cnblogs.com/cane/p/3948237.html
Copyright © 2011-2022 走看看