diff --git "a/25\351\231\210\344\275\263\347\202\234/9.7\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232\347\254\224\350\256\260.md" "b/25\351\231\210\344\275\263\347\202\234/9.7\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..deb5f5b3d4189385bdc186c9540b553d1e0b1341 --- /dev/null +++ "b/25\351\231\210\344\275\263\347\202\234/9.7\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232\347\254\224\350\256\260.md" @@ -0,0 +1,79 @@ +# 笔记 + +数据库的范式 + +1.第一范式:要求字段的内容,不可分割,为的是保证数据的原子性。 + +2.第二范式:要求满足第一范式的基础上,要求非主键字段要完全依赖主键(非主键要依赖整个联合主键),而不能只依赖部分。 + +3.第三范式:满足第二范式的前提上,要求非主键属性要直接依赖于主键。 + +# 练习 + +CREATE DATABASE task charset utf8; +use task; +-- 学校 +CREATE TABLE college( +c_id int PRIMARY KEY auto_increment, +c_name VARCHAR(20), +c_tel char(11), +c_address VARCHAR(20) +); +-- 专业 +CREATE TABLE major( +m_id int PRIMARY KEY auto_increment, +m_name VARCHAR(20), +c_id int, +FOREIGN KEY(c_id) REFERENCES college(c_id) +); +-- 班级 +CREATE TABLE clazz( +cz_id int PRIMARY KEY auto_increment, +cz_name VARCHAR(20), +cz_grade VARCHAR(20), +m_id int, +FOREIGN KEY(m_id) REFERENCES major(m_id) +); + +-- 教室 +CREATE TABLE classroom( +cr_id int PRIMARY KEY auto_increment, +cr_name VARCHAR(20) +); +-- 教师 +CREATE TABLE teacher( +t_id int PRIMARY KEY auto_increment, +t_name VARCHAR(20), +c_id int, +FOREIGN KEY(c_id) REFERENCES college(c_id) +); +-- 课程信息表 +CREATE TABLE message( +ms_id int PRIMARY KEY auto_increment, +ms_time VARCHAR(20) +); +-- 课程表 +CREATE TABLE timetable( +tt_id int PRIMARY KEY auto_increment, +tt_name VARCHAR(20), +tt_credit int, +c_id int, +cr_id int, +t_id int, +ms_id int, +FOREIGN KEY(c_id) REFERENCES college(c_id), +FOREIGN KEY(cr_id) REFERENCES classroom(cr_id), +FOREIGN KEY(t_id) REFERENCES teacher(t_id), +FOREIGN KEY(ms_id) REFERENCES message(ms_id) +); +-- 学生 +CREATE TABLE student( +s_id int PRIMARY KEY auto_increment, +s_name VARCHAR(20), +s_tel char(11), +s_grade VARCHAR(20), +cz_id int, +tt_id int, +FOREIGN KEY(cz_id) REFERENCES clazz(cz_id), +FOREIGN KEY(tt_id) REFERENCES timetable(tt_id) +); \ No newline at end of file