diff --git "a/29 \350\267\257\347\216\262/20230905 \347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.md" "b/29 \350\267\257\347\216\262/20230905 \347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..5cc34ea38655fc5d081f0b5ed382f10495c19f95 --- /dev/null +++ "b/29 \350\267\257\347\216\262/20230905 \347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.md" @@ -0,0 +1,137 @@ +# 笔记 + +关系是相互的,一个学生,可以选多个课,课也可以被多个学生选(多对多)这种关系应借助第三个表进行关联,将前面两张表的主键当作外键 + +表与表的关系:1对1,1对多,多对多 +1对多:第二张的表的主键当另一个表的外键(多) +1对1:将其中任一表的主键放在另一张表中的外键 +头脑风暴:院系、专业、班级、学生,教师、谢程、深程表、教室 + +visio +箭头变上有一个加号数据库chen's + +数据库设计方法 按住Ctrl,再拖动,可复制 +1.直观设计法 选中,一直抢动,不能点击 +2.规范设计法 多对多,用字母表行N.M… +3.计算机辅助设计法 +E-R图(实体关系图) +三要素:实体(表)、属性(字度)和关系(以外键约束) +实体用矩形.主键:加下划线 外键:横线中间加菱形 + +# 作业 + +``` mysql +create database school charset utf8; + +use school; + +-- 院系表 +create table department( + d_id int primary key, + d_name varchar(10) +); +insert into department values +(123,'软件工程学院'), +(456,'信息工程学院'), +(789,'建筑工程学院'); + +-- 专业表 +create table speciality( + s_id int primary key, + s_name varchar(10), + d_id int, + foreign key (d_id) references department(d_id) +); +insert into speciality values +(11,'软件技术与开发',123), +(22,'信息技术',456), +(33,'建筑设计',789); + +-- 教室表 +create table classroom( +r_id int PRIMARY KEY, +r_name varchar(10) +); +insert into classroom values +(1,'实训一'), +(2,'实训二'), +(3,'实训三'); + +-- 班级表 +create table class( + c_id int primary key, + c_name varchar(10), + s_id int, + foreign key (s_id) references speciality(s_id) +); +insert into class values +(1,'软件技术1班',11), +(2,'软件技术2班',11), +(3,'软件技术3班',11); + +-- 课程 +CREATE TABLE course( + couseId int PRIMARY key, + courseName varchar(10), + credit int, + c_id int,-- 班级编号 + r_id int,-- 教室编号 + foreign key (c_id) references class(c_id), + foreign key (r_id) references classroom(r_id) +); +insert into course VALUES +(1,'java',78,1,2), +(2,'html',90,2,3), +(3,'mysql',80,3,1); + +-- 教师表 +create table teacher( + t_id int primary key, + t_name varchar(10), + sex varchar(10), + d_id int,-- 院系编号 + couseId int,-- 课程编号 + foreign key (d_id) references department(d_id), + foreign key (couseId) references course(couseId) +); +insert into teacher values +(1,'张三','男',123,1), +(2,'张四','男',456,2), +(3,'李美','女',789,3); + +-- 课程表 +create table `select` ( + selectId int primary key, + couseId int,-- 课程编号 + time varchar(20), + t_id int,-- 教师编号 + r_id int,-- 班级编号 + foreign key (couseId) references course(couseId), + foreign key (t_id) references teacher(t_id), + foreign key (r_id) references classroom(r_id) +); +insert into `select` values +(1,1,'周一上午',2,3), +(2,2,'周二下午',1,2), +(3,3,'周三上午',3,1); + +-- 学生表 +create table student ( + id int primary key, + name varchar(10), + sex varchar(5), + age int, + address varchar(20), + d_id int,-- 院系编号 + c_id int,-- 课程编号 + selectId int,-- 选修表的编号 + foreign key (d_id) references department(d_id), + foreign key (c_id) references class(c_id), + foreign key (selectId) references `select`(selectId) +); +insert into student values +(11111,'小明','男',18,'团结里1',123,1,1), +(22222,'小花','女',118,'团结里2',123,2,2), +(33333,'小王','男',1118,'团结里3',456,3,3); +``` +