学习内容:
1.any all 关键字
如果where 后的条件需要比对多个值时,可以用any或all关键字
例如:
SELECT cno,sno,degree FROM score WHERE degree >ANY(SELECT degree FROM score WHERE cno='3-245') AND cno='3-105' ORDER BY degree DESC;
2.数据库设计:
分析需求,设计E-R模型,利用三大范式审核结构,代码编写
(a)E-R模型:
包含实体,实体属性,实体间的关系
实体即关键对象,例如学校内的教师就是一个实体,实体属性就是实体本身的一些特征,例如教师有工号、姓名、性别、年龄、教授的学科等属性,
实体间关系,例如教师教授学生,教师与学生间的关系就是教授与被教授,同时实体间的关系还分为:1对1,例如每个人的基因都是唯一的,一对一的,
一对多,例如一个老师可以教授多名学生,多对多,例如一个学生可以学多门课,而一门课有多个学生学习。
E-R模型:
设计时注意:
1.如果是1:1的关系:那么将实体转换成表,将任意1端实体的主键拿到另一端实体做外键。
2.如果是1:N的关系:那么将实体转换成表,关系不成表,将1端实体的主键拿到N端实体做外键,即1端为主表,n端为副表。
3.如果是M:N的关系:将实体转换成表,关系形成表,同时将两端实体的主键拿过来作为该表的外键,形成复合主键。
复合主键:
CREATE TABLE usecar(
driverid INT,
carid INT,
PRIMARY KEY (driverid,carid),
//复合主键,含一个以上的字段
CONSTRAINT fk_driverid FOREIGN KEY(driverid) REFERENCES drivers(did)
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT fk_carid FOREIGN KEY(carid) REFERENCES cars(cid)
ON UPDATE CASCADE ON DELETE CASCADE
);
(b)范式:
第一范式:将字段最小化分解,例如地址一般包含省市县街道这几级,把每一级分开成为多个字段。
第二范式:确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言),一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中,如果一个表只有一个单一字段的主键且该表符合第一范式,那么该表必定符合第二范式。
下表的主键是由订单编号和商品编号而形成的复合主键,商品名称、数量、单位、价格和订单编号主键没有关系,违反第二范式,应当把商品编号以及商品名称、数量、单位、价格单独建表
第三范式:每一列与主键列直接相关,而不是间接相关,每条字段相互独立,不存在依赖关系,例如一条家电类商品信息,可以把家电的种类单独做一张表,用编号代替家电种类名称。
例: