模式
定义:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
理解: ① 一个数据库只有一个模式; ② 是数据库数据在逻辑级上的视图; ③ 数据库模式以某一种数据模型为基础; ④ 定义模式时不仅要定义数据的逻辑结构(如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等),而且要定义与数据有关的安全性、完整性要求,定义这些数据之间的联系。
外模式
定义:也称子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
理解: ① 一个数据库可以有多个外模式; ② 外模式就是用户视图; ③ 外模式是保证数据安全性的一个有力措施。
内模式
定义:也称存储模式(Storage Schema),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式(例如,记录的存储方式是顺序存储、按照B树结构存储还是按hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定)。
理解: ① 一个数据库只有一个内模式; ② 一个表可能由多个文件组成,如:数据文件、索引文件。 它是数据库管理系统(DBMS)对数据库中数据进行有效组织和管理的方法 其目的有: ① 为了减少数据冗余,实现数据共享; ② 为了提高存取效率,改善性能。
外模式/模式映像
当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式映像作相应改变,可以使外模式保持不变。应用程序是依据外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式/内模式映像
当数据库的存储结构改变了(例如选用了另一种存储结构),由数据库管理员对模式/内模式作相应的改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。
笛卡尔积
相当于排列组合,{1,2,3}{4,5}=》{1,4}{1,5}{2,4}{2,5}{3,4}{3,5}
基本操作
选择、投影、并、差、笛卡尔积五种基本的操作,此外还有连接、除、交等。
完整性约束
实体完整性:关系(所谓的关系就是表)的主码不能取空值
参照完整性:是指参照关系中每个元素的外码要么为空(NULL),要么等于被参照关系中某个元素的主码。
用户定义的完整性:指对关系中每个属性的取值作一个限制(或称为约束)的具体定义.比如 性别属性只能取”男“或”女“ ,再就是年龄的取值范围,可以取值0-130 ,但不能取负数,因为年龄不可能是负数。
等值连接
连接运算符是“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组
自然连接
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
笛卡尔积
·想排列组合
关系
两个表的公共字段。
优点:表示独立的,需要什么数据就查相应的表。
缺点:多表查询的时候,效率低下。
删除模式和删除数据库,删除表和删除索引、视图都是drop,删除记录是delete
实体:矩形
属性:椭圆
联系:菱形
修改基本表
增加一个属性:基本语法
ALTER TABLE stu ADD column_name datatype;
来看个增加例的实例:
ALTER TABLE stu ADD age int;
修改列的属性:
ALTER TABLE tname modify age char(1);
删除属性,基本语法:
ALTER TABLE table_name DROP COLUMN column_name
来看个删除列实例.
alter table stu drop column age;
Show variables like ‘char_%’
多表删除
delete from one,two using one join two
on one.public_field=two.public_field where one_id=2;
多表更新
update one join two on one.public_field=two.public_field
set one_data='x',two_data='y' where one.id=3;
修改数据使用update
Mysql数值类型
Tinyint(2) Zerofill表示不最小宽度为2,只是零填充,不会影响取值范围。
Mysql、php不支持布尔bool类型
约束条件
主键:primary key
外键:foreign key()references
不空:not null
自动增长:auto_increment
数据库引擎
关系模式
关系的描述称为关系模式(Relation Schema)它可以形式化地表示为:
R(U,D,dom,F)
其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。
通常简记为:
R(U)或R(A1,A2,…,An)
其中R为关系名,U为属性名集合,A1,A2,…,An为各属性名。
实体-关系模式
每个实体转化为一个关系模式
|
|
属性 |
码 |
实体 |
关系模式
|
实体属性 |
实体码 |
1:1
|
独立模式
|
实体码+联系属性
|
某端码
|
与某端合并 |
某端属性+另一端码+联系属性 |
某端码 |
|
1:n |
独立关系模式
|
各实体码+联系属性
|
N端码
|
与n端合并 |
N端属性+1端码+联系属性
|
N端码 |
|
m:n |
加新的关系模式 |
各实体码+联系属性 |
各实体码+其他 |
m:n:p |
关系模式 |
各实体码+联系属性 |
各实体码+其他 |
相同码的关系属性 |
合并 |
各关系模式-同义属性 |
原码 |
范式
1NF->2NF:消除非主属性对码的部分函数依赖。
|
R1完全函数依赖的决定因素+被决定因素 |
R2剩余属性+所有剩余属性的决定因素 |
2NF->3NF:消除非主属性对码的传递函数依赖。
|
R1起传递作用的函数依赖的因素和被决定因素 |
R2剩余属性+传递函数依赖的决定因素+所有属性的决定因素 |
3NF->BCNF:消除属性对码的部分和传递函数依赖。
若关系模式中
只要一个属性一定属于2NF
只有两个属性一定为3NF和BCNF
1NF关系模式中所有的属性是不可再分的
若果关系模式中只有主属性,一定为3NF
部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
举个例子:学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号);
完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
例子:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在R关系中,(学号,班级)->(姓名),但是(学号)->(姓名)不成立,(班级)->(姓名)不成立,所以姓名完全函数依赖与(学号,班级);
传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
例子:在关系R(学号 ,宿舍, 费用)中,(学号)->(宿舍),宿舍!=学号,(宿舍)->(费用),费用!=宿舍,所以符合传递函数的要求;
视图
视图不保存数据,只是通过执行相应的查询操作完成相应的功能