一、数据库建表规范及三个范式
参考博客:https://blog.csdn.net/guo13313/article/details/48847343
表的主题(学生信息,课程信息,学生课程表等)
如果将学生数据,课程数据,学生数据,院系数据统一合成一张表显然不妥,会发生数据冗余(增删改查),所以每个表应该设置一个主题,每个表都要符合三个范式,同时设置主键和外键。
第一范式:每一列属性都是不可再分的属性值,确保每一列的原子性,
比如一个地址具体能够分到省市县镇村等,具体看需要。
第二范式:每一个非主属性完全依赖于候选键(不存在部分依赖), 每个非主属性是由整个主键函数决定的,
而不能有主键的一部分来决定,那么就称是第二范式
部分依赖就是非候选键依赖于某个主键,而非全部主键。 eg:(学生,课程)->教材
第三范式:数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系
如果关系模式R是2NF,且关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递依赖
eg:老师职称->老师姓名->学号 不存在传递依赖(参考https://blog.csdn.net/harbor1981/article/details/53449435)
二、主键和外键
主键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键,但是,成绩表(学号,课程号,成绩) :成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录, 所以 学号和课程号的属性组是一个主键
外键:比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键
成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键 ,外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。
三、
数据字典:数据字典是描述数据的信息集合
四、SQL语言复习
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
DELETE FROM table_name
WHERE condition;
ORDER BY Country DESC;
SELECT * FROM Customers
WHERE column_name IS NULL
//SELECT TOP 子句用于
//指定要返回的记录数量,百分数
SELECT TOP number (TOP 50 PERCENT) column_name(s)
FROM table_name
WHERE condition;