当时SQL server数据库准备考试了,我花了两个星期把整本书看了,这些是当时做的笔记(针对老师划得重点),现在学习Java做了几个项目后,发现有很多东西不是特别理解,特地再次复习一下,并且自己再思考思考,有兴趣可以看GitHub文章
关系就是一张特定的()二维表。
-|关系的数学定义:域(同类型值集合)、由笛卡儿积(任意域各自相乘)推出关系的定义
-|性质:同一个关系中,同列同数据类型、不同列属性名不同不可再分、元组不同、列和行次序无关紧要。
-|实体及实体间的联系用关系来表示(冗余属性,主码外码的关系)。
数据完整性是指关系模型中数据正确性和一致性。
三类完整性约束:
-|实体完整性:关系的主码属性值不为空。
-|参照完整性:F是关系R的外码,F是关系S的主码,称R为参照关系,S被参照关系。定义了外码与主码之间引用规则,保证数据一
致性。
-|用户自定义完整性:用户根据实际情况对数据进行的规定,也称域完整性规定。(有效性、可靠性)
关系代数是以关系为运算对象的一组高级运算的集合,是一种抽象的查询语言,是关系数据操作语言的一种传统表达方式。
(运算对象是关系,运算结果也是关系)
关系代数分两类:
-|传统的集合操作:交(R∩S={t | t∈R∧t∈S})、并(R∪S={t|t∈R∨t∈S})、差(R-S={t | t∈R∧t ∉ S} )、笛卡儿积(R×S)。
-|专门的关系操作:
选择(σF(R)={t | t∈R^ F(t)='真'},F为属性名,右边为返回的值)
投影(πA(R)={t[A]|t∈R},A为属性名,右边为返回的值)
连接( ,从两个关系的笛卡儿积中选择规定条件的元组),也称θ连接
(补充个人思考,要利用另外一张二维表(关系)就需要使用自然连接,也就是说学习数据操作时,就可以先写传统的表达方式再写SQL)
除法......。
-两类辅助运算符(传统和专门都可用):
-|比较运算符:>、 ≥、 <、 ≤、 =、 ≠
-|逻辑运算符:∨(或)、 ∧(与)、 ┐(非)
关系模式中各个属性之间的相互关联,就是数据依赖。
-|函数依赖:X、Y是关系R的属性,每个X只有一个Y,(X→Y)称Y函数依赖X。
例:(主码→其他属性;学号→姓名 ; 学号→性别 ;学号→出生日期)
-|非平凡函数依赖:X→Y,且Y ! ⊆ X。(学号、课程号→成绩)
-|平凡函数依赖:X→Y,且Y ⊆ X。(学号、课程号→课程号)
-|完全函数依赖:Z为X的真子集,X→Y,且Z !→Y。(学号、课程号 !→成绩)
-|部分函数依赖:Z为X的真子集,X→Y,且Z →Y。(学号、课程号 →姓名)
-|传递函数依赖:Z为关系R属性,X→Y,Y→Z。(学号→系主任)(所在系号→系主任)
-|多值依赖:4NF
-|连接依赖:5NF
由于在关系模式中的某些不合适的数据依赖引起(数据冗余、更新异常、插入异常、删除异常)。
关系模式规范化的目的:是解决关系模式中存在的异常问题,消除数据依赖中不合适部分。
规范化:一个低一级关系模式,通过模式分解转换成若干个高一级范式的关系模式的集合。
范式(不同的规范化程度的标准) R为一个关系模式
-|第一范式:R的每个属性的值域都是不可分的简单数据项的集合。
-|第二范式:R的每个非主属性都完全函数依赖于(主或者候选)码。(前提:R∈1NF)
-|第三范式:R的每个非主属性不存在传递函数依赖于(主或者候选)码。(前提:R∈2NF)
-|B C 范式:R中每个主属性不存在部分函数依赖和传递函数依赖。(前提:R∈3NF)
按照规范设计方法,数据库设计分为六各阶段
-|需求分析:分析用户(对象)的要求
-|概念结构设计:将需求分析得到的数据抽象为反映用户观点的概念模型(事物联系)。
-|逻辑结构设计:将概念设计阶段的到的概念模式转换为具体DBMS所支持的,并建立相应外模式。
-|数据库物理设计:将逻辑设计阶段成型的数据库逻辑模型结合制定的DBMS,设计适合的物理结构。
-|数据库实施:根据逻辑和物理设计的结果,在计算机上建立起实际的数据库结构,并转入数据,进行试运行和评价。
-|数据库运行和维护:数据库实施阶段试运行结果符合设计目标后。
将实体、属性和实体之间的联系转化为关系模式:
-|实体的转化:将实体转换为一个关系模式。
-|联系的转化:1:1的联系、1:n的联系(选择性建)、m:n的联系(需建立新关系)。