出发点:
数据中的各种定义实在看不下去,太离散数学了。只有直接看例子了,少牺牲点脑细胞。但是,没有了严谨的定义,很多东西就只可意味不可言传了。通过例子可以用来理解数据库的离散数学式的定义。
例子:
学号 | 姓名 | 性别 | 班级 |
201901 | 数数 | 男 | 11 |
201902 | 据据 | 男 | 12 |
201903 | 库库 | 女 | 13 |
关系(Relation): Stu(学号,姓名,性别,班级)
元组(Tuple): {201901,数数,男,711}
键(Key): {学号}和{姓名,性别}(假设没有同名且同性别)
隐含键: 未被制定的键(还有一个名字替补键)
候选键: 隐含键+主键
超键: 如 学号,姓名 是一个超键
域:dom(学号) = {20101,201902,201903} dom(姓名) = {数数,据据,库库}
度: 关系Stu的度为 4(因为表有4列)
笛卡尔积:
名集D1=(数数,据据,库库) 班级集D2=(11,12,13)
D1与D2的笛卡尔积为:D1 X D2 = { (数数,11),(数数,12),(数数,13),
(据据,11),(据据,12),(据据,13),
(库库,11),(库库,12),(库库,13) }
广义笛卡尔积:
广义笛卡尔积的对象是 关系,操作的单位直接是元组,而不是具体的元素
假设有班级表
班级 | 班主任 |
11 | miss11 |
12 | miss12 |
关系与关系Class的广义笛卡尔积为:StuStu X Class:
Stu.学号 | Stu.姓名 | Stu.性别 | Stu.班级 | Class.班级 | Class.班主任 |
201901 | 数数 | 男 | 11 | 11 | Miss11 |
201901 | 数数 | 男 | 11 | 12 | Miss12 |
201902 | 据据 | 男 | 12 | 11 | miss11 |
201902 | 据据 | 男 | 12 | 12 | miss12 |
201903 | 库库 | 女 | 13 | 11 | miss11 |
201903 | 库库 | 女 | 13 | 12 | miss12 |