1.4.1 三个世界的划分
1、现实世界
2、信息世界:
- 实体:客观存在的事物、事件。
- 属性:实体的某一特性。分为属性名,属性值
- 码/键:唯一标识实体的属性或属性的组合。如学号
- 域:属性的取值范围。如“男、女”
- 实体型:实体名及其所有属性的集合。如学生(学号,姓名,性别,年龄)
- 实体集:同一类型实体的集合,如全体学生
- 联系:两个实体集之间,三个或三个以上实体集之间,单个实体集与自身都存在一对一,一对多,多对多的联系
- 概念模型表示:E-R图
3、机器世界:
- 字段/数据项:标记实体属性的命名单位,常和属性名相同。
- 记录:字段的有序集合。
- 文件:同一类记录的集合。
- 关键字/键:能唯一标识文件中每条记录的字段/字段集。
对应关系:
现实世界 | 信息世界 | 机器世界 |
---|---|---|
事物个体 | 实体 | 记录 |
事物总体 | 实体集 | 文件 |
事物特征 | 属性 | 字段 |
事物之间的联系 | 概念模型 | 数据模型 |
数据模型中的关系模型:
- 关系:一个关系对应一张表。
- 元组:表中的一行。
- 属性:表中的一列。
- 码/键:表中的某个属性组。
- 域:一组具有相同数据类型的值的集合。
- 分量:元组中的一个属性。
1.5 数据库系统的内部结构
三级模式:
模式/逻辑模式:数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
内模式:存储模式,物理结构和存储方式,数据在数据库内部的组织方式。
外模式:用户模式,用户可见的局部数据的逻辑结构和特征。
二级映像
外模式/模式映像:当模式改变时,由数据库管理员对各个外模式/模式映像作相应改变,可以使外模式保持不变。应用程序不必修改,保证了数据与程序的逻辑独立性。
模式/内模式映像:当数据库的存储结构改变时,由数据库管理员对各个模式/内模式作相应改变,可以使模式保持不变,应用程序不必修改,保证了数据与程序的物理独立性。
2.1关系的形式化定义及有关概念
关系模式与关系数据库
关系模式可形象地表示为R(U,D,DOM,F)
R:关系名
U:所有属性名
D:属性来自哪些域
DOM:属性和域的映射
F:属性间的依赖关系
关系操作:
插入、查询、删除、修改
其中查询操作分为:
选择 找行
投影 选取列
取两列,逗号分隔
关系代数语言:用关系的运算来表达查询。
三要素:运算对象、运算符、运算结果。
3.2 SQL数据定义
一、创建数据库:
CREATE DATABASE lcr;
二、基本表的创建
1)使用数据库lcr
use lcr;
2)创建表
CREATE TABLE `department` (
`Dno` varchar(3) NOT NULL,
`Dname` varchar(30) DEFAULT NULL,
`Office` varchar(4) DEFAULT NULL,
PRIMARY KEY (`Dno`),
UNIQUE KEY `Dname` (`Dname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `student` (
`Sno` varchar(3) NOT NULL DEFAULT '',
`Sname` varchar(10) NOT NULL,
`Sex` char(2) DEFAULT NULL,
`Birth` date DEFAULT NULL,
`Dno` varchar(3) DEFAULT NULL,
PRIMARY KEY (`Sno`),
KEY `student_fk_dno` (`Dno`),
CONSTRAINT `student_fk_dno` FOREIGN KEY (`Dno`) REFERENCES `department` (`Dno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `course` (
`Cno` varchar(3) NOT NULL DEFAULT '',
`Cname` varchar(20) DEFAULT NULL,
`Cpno` varchar(3) DEFAULT NULL,
`Credit` int(1) DEFAULT NULL,
PRIMARY KEY (`Cno`),
UNIQUE KEY `uq_cname` (`Cname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `lcr`.`sc` (
Sno VARCHAR(3),
Cno VARCHAR(3),
Score INT(3),
CONSTRAINT fk_sno FOREIGN KEY(Sno) REFERENCES Student(Sno),
CONSTRAINT sc_fk_cno FOREIGN KEY(Cno) REFERENCES Course(Cno),
CONSTRAINT ck_score CHECK(Score BETWEEN 0 AND 100),
CONSTRAINT pk_sc PRIMARY KEY(Sno,Cno)
);
CREATE TABLE `teacher` (
`Tno` varchar(3) NOT NULL DEFAULT '',
`Tname` varchar(10) NOT NULL,
`Prof` varchar(10) NOT NULL,
`Engage` date DEFAULT NULL,
`Dno` varchar(3) DEFAULT NULL,
PRIMARY KEY (`Tno`),
KEY `teacher_fk_dno` (`Dno`),
CONSTRAINT `teacher_fk_dno` FOREIGN KEY (`Dno`) REFERENCES `department` (`Dno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tc` (
Tno VARCHAR(3),
Cno VARCHAR(3),
Classname VARCHAR(10),
Semester VARCHAR(30) DEFAULT NULL,
CONSTRAINT fk_tno FOREIGN KEY(Tno) REFERENCES Teacher(Tno),
CONSTRAINT tc_fk_cno FOREIGN KEY(Cno) REFERENCES Course(Cno),
CONSTRAINT pk_scc PRIMARY KEY(Tno,Cno,Classname)
);
*)利用子查询创建表
1)复制表SC
CREATE TABLE SCnew <