1、域: 是一组具有相同数据类型的值的集合
如:所有的整型(实数集)是一个域,介于某个取值范围的日期
2、笛卡尔积
(1)笛卡尔积:
给定一组域D1,D2,D,...,Dn,这些域中可以有相同的。D1,D2,D,...,Dn的笛卡尔积为:D1×D2×D×...×Dn= { d1,d2,...,dn } ( 每一个d都对应一个D,如:d1--->D1 )
所有域的所有取值的集合,且不能重复
如a = { 1 , 2 , 3 } ,b = { a, b , c };
则 a× b = :{ 1 ,a } , { 1 ,b } , { 1 ,c } ,{ 2 ,a } , { 2 ,b } , { 2,c } , { 3 ,a } , { 3 ,b } , { 3 ,c }
(2)元组:
笛卡尔积中每一个元素 ( d1,d2,...,dn ) 叫做一个 n 元组 或 简称元组
(3)分量:
笛卡尔积元素 ( d1,d2,...,dn ) 中的每一个值di叫做一个分量
(4)基数(笛卡尔积的基数代表了笛卡尔积元组的条数):
若Di( i = 1 , 2 , ... , n )(一个域)为由限集,基数(每个域里面的元素个数)为mi( i = 1 , 2 , ... , n ),则笛卡尔积的基数为 D1×D2×...×Dn (每个域的基数的乘积)为基数M
上面的例子中的笛卡尔积基数为: 3 × 3 = 9
笛卡尔积的表示方法:
笛卡尔积可表示为一个二维表,表中的每行对应一个元素,表中的每列的值来自一个域。
候选码:某一属性组的值能唯一地标识一个元组,则该属性组为候选码
若一个关系中有多个候选码,则选定其中一个为主码。例如学生的学号就可以作为一个主码,因为它是唯一的。
一个关系可以没有主码,但是设置一个主码的话对数据库查询效率会高一些。
主码不一定是只有一个属性,主码可以由一个或者多个属性组成。主码是候选码之一。
考虑主码的时候考虑的是属性的唯一性,即该属性的值不会重复,如果重复了就无法唯一标识整个元组。
如:学号可以标识学生这一个元组
一个关系中可以有多个候选码,选定一个为主码
主码和设置非空的关系是什么?
主码的要求是:非空、唯一性。
而设置某个属性:非空仅仅是不允许输入空值,但却可以重复。
外码(外键)
那么什么是外码呢?
如果一个关系中的一个属性(该属性不能是候选码)是另外一个关系中的主码则这个属性为外码。
外码的值要么为空,要么要为其对应的主码中的一个值。
那么外键的作用是什么呢?
保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。
使两张表形成关联,外键只能引用外表中的列的值或使用空值。
阻止执行(情况一):
1、从表插入新行,其外键值不是主表的主键值便阻止插入;
2、从表修改外键值,新值不是主表的主键值便阻止修改;
3、主表删除行,其主键值在从表里存在便阻止删除(要想删除,必须先删除从表的相关行);
4、主表修改主键值,旧值在从表里存在便阻止修改(要想修改,必须先删除从表的相关行)。
级联执行(情况二):
1、主表删除行,连带从表的相关行一起删除;
2、主表修改主键值,连带从表相关行的外键值一起修改。
两种方法提供给用户选择。无论选取哪种方法,从表里都不会有多余行。
从另一个角度理解,用拒绝同一事物在从表中的标志与主表不一致
关系可以有三种类型:
基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示
查询表:查询结果对应的表
视图表:由基本表或其它试图表导出的表,是虚表,不对应实际存储的数据。