第一步:servlet+MyBitis+tomcat来完成后台的搭建 之 数据库的设计与创建(1)

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/H2677lucy/article/details/82181944

目录

说明

       如果想跟着我的项目走的话,我建议可以导入使用我的sql语句去创建表以及导入数据

一,数据库的设计与创建

这一部分我们主要来设计数据库以及创建数据库并且导入一些数据来验证数据库的一些约束条件。

以下是我设计的数据库,可能在开发过程中有些数据库用不到,但是我设计出来了,而且也写明了注释,并且数据库的名字以及标的名字和字段用英文表示,比较清晰。(值得提醒的是,建表的时候按照我的顺序去写,因为我这是主表剪完之后建的从表,顺序有问题,建表的时候会有错误,还有就是在建表的时候忘记加约束,所以我在后面加了唯一约束的sql语,不是主键的字段要加唯一约束才能作为另外一个从表的外键)

 这是我完成的表

##学校到专业的级联
CREATE TABLE sys_cascade(
    ##设置自增id为主键
    cascade_id INT PRIMARY KEY AUTO_INCREMENT,
    ##设置名称
    cascade_name VARCHAR(20) NOT NULL,
    ##设置该名称所属的级别
    type_id INT NOT NULL
);

##创建学生表
CREATE TABLE student(
##学生的自增id
    student_id INT PRIMARY KEY AUTO_INCREMENT,
    ##学生的姓名
    student_name VARCHAR(20) NOT NULL,
    ##学生的学号
    student_num INT NOT NULL,
    ##学号的班级 关联sys_cascade表的主键
    class_id INT NOT NULL,
    FOREIGN KEY(class_id) REFERENCES sys_cascade(cascade_id),
    ##学生的在线状态student
    student_state INT
);

##课程表student
CREATE TABLE cause(
    cause_id INT PRIMARY KEY AUTO_INCREMENT,
    cause_name VARCHAR(20) NOT NULL,
    cause_num INT NOT NULL
);

##创建教室表
CREATE TABLE class(
    calss_id INT PRIMARY KEY AUTO_INCREMENT,
    calss_num INT NOT NULL,
    calss_intro VARCHAR(50) NOT NULL
);
##创建教师表
CREATE TABLE teacher(
    teacher_id INT PRIMARY KEY AUTO_INCREMENT,
    teacher_num INT NOT NULL,
    teacher_name VARCHAR(20) NOT NULL,
    teacher_intro TEXT NOT NULL
);
##必须添加唯一约束  需要在其他表中作为外键使用

ALTER TABLE cause ADD CONSTRAINT cause_constraint UNIQUE(cause_num);
ALTER TABLE class ADD  CONSTRAINT class_constraint UNIQUE(class_num);
ALTER TABLE teacher ADD CONSTRAINT teacher_constraint UNIQUE(teacher_num);

##课程-教室-教师表
CREATE TABLE cau_cla_teacher(
        cau_cla_teacher_id INT PRIMARY KEY  AUTO_INCREMENT,
        cause_num INT NOT NULL,
        FOREIGN KEY(cause_num) REFERENCES cause(cause_num),
        class_num INT NOT NULL,
        FOREIGN KEY(class_num) REFERENCES class(class_num),    
        teacher_num INT NOT NULL,
        FOREIGN KEY(teacher_num) REFERENCES teacher(teacher_num),
        cau_cla_teacher_intro VARCHAR(50)
    );
CREATE TABLE cause_table(
    cause_table_id INT PRIMARY KEY AUTO_INCREMENT,
    cascade_id INT NOT NULL,
    FOREIGN KEY(cascade_id) REFERENCES sys_cascade(cascade_id),
    order_time INT NOT NULL,
##下面的这些为单双周的课程
    single_week_one INT NOT NULL,
    single_week_two INT NOT NULL,
    single_week_three INT NOT NULL,
    single_week_four INT NOT NULL,
    single_week_five INT NOT NULL,
    
    double_week_one INT NOT NULL,
    double_week_two INT NOT NULL,
    double_week_three INT NOT NULL,
    double_week_four INT NOT NULL,
    double_week_five INT NOT NULL
    );
    
##考勤状态表
CREATE TABLE sign_state(
    sign_state_id INT PRIMARY KEY AUTO_INCREMENT,
    sign_state_num CHAR NOT NULL,
    sign_state_name VARCHAR(20) NULL

);    
##课时顺序表
CREATE TABLE order_time(
    order_time_id INT PRIMARY KEY AUTO_INCREMENT,
    time_part VARCHAR(20)


);
##当天学生的签到情况
CREATE TABLE today_sign_state(
##学生的自增id
    student_id INT PRIMARY KEY AUTO_INCREMENT,
    ##学生的姓名
    student_name VARCHAR(20) NOT NULL,
    ##学生的学号
    student_num INT NOT NULL,
    ##学号的班级 关联sys_cascade表的主键
    class_id INT NOT NULL,
    FOREIGN KEY(class_id) REFERENCES sys_cascade(cascade_id),
##A B C D 代表1 2 34 节课
    A INT ,
    B INT ,
    C INT ,
    D INT 
);
ALTER TABLE student ADD CONSTRAINT student_constraint UNIQUE(student_num);
##汇总所有学号生的全部签到记录
CREATE TABLE all_record(
    all_record INT PRIMARY KEY AUTO_INCREMENT,
    student_num INT NOT NULL,
    FOREIGN KEY(student_num) REFERENCES student(student_num),
    today_date VARCHAR(50) NOT NULL,
    A  INT ,
    B INT ,
    C INT ,
    D INT 
);
CREATE TABLE user_pass(
    up_id INT PRIMARY KEY AUTO_INCREMENT,
    stu_id INT NOT NULL,
    id_card LONG NOT NULL,
    pass VARCHAR(20)
ALTER TABLE  user_pass ADD CONSTRAINT user_pass_constraint UNIQUE(stu_id);
##给student表创建外键  最初的想法是 =从教务系统中导入学生的数据   为了真实期间 我们将所有的信息 自己填写在user_pass 数据库中  包括用户名和密码
##学生第一次访问一个网页  通过输入姓名以及学号 和身份证号 老获取自己的密码 然后在登录  这个表就是起到这样一个效果。
ALTER TABLE student ADD CONSTRAINT fk_up FOREIGN KEY(student_num) REFERENCES user_pass(stu_id);

二,数据的导入

   数据的导入,当你完成所有表的创建时,执行下面的插入数据操作(复制粘贴执行) 这些数据的插入肯定也有前后之分我整理了一下  如果有错误 自己在调整 位置 (因为主外键的原因)


insert into `user_pass` (`up_id`, `stu_id`, `id_card`, `pass`) values('1','1508010101','610321199601234615','a123456');
insert into `user_pass` (`up_id`, `stu_id`, `id_card`, `pass`) values('2','1508010102','610321199601234615','a123456');
insert into `user_pass` (`up_id`, `stu_id`, `id_card`, `pass`) values('3','1508010103','610321199601234615','a123456');
insert into `user_pass` (`up_id`, `stu_id`, `id_card`, `pass`) values('4','1508010201','610321199601234615','a123456');
insert into `user_pass` (`up_id`, `stu_id`, `id_card`, `pass`) values('5','1508010202','610321199601234615','a123456');
insert into `user_pass` (`up_id`, `stu_id`, `id_card`, `pass`) values('6','1508010203','610321199601234615','a123456');


insert into `cau_cla_teacher` (`cau_cla_teacher_id`, `cause_num`, `class_num`, `teacher_num`, `cau_cla_teacher_intro`) values('1','10001','102307','10010','由10010老师在102307教室上10001课程');
insert into `cau_cla_teacher` (`cau_cla_teacher_id`, `cause_num`, `class_num`, `teacher_num`, `cau_cla_teacher_intro`) values('2','10002','101502','10010','同上解释');
insert into `cau_cla_teacher` (`cau_cla_teacher_id`, `cause_num`, `class_num`, `teacher_num`, `cau_cla_teacher_intro`) values('3','10003','101503','10020','同上解释');
insert into `cau_cla_teacher` (`cau_cla_teacher_id`, `cause_num`, `class_num`, `teacher_num`, `cau_cla_teacher_intro`) values('4','10001','103306','10020','同上解释');
insert into `cau_cla_teacher` (`cau_cla_teacher_id`, `cause_num`, `class_num`, `teacher_num`, `cau_cla_teacher_intro`) values('5','10002','104401','10030','同上解释');
insert into `cau_cla_teacher` (`cau_cla_teacher_id`, `cause_num`, `class_num`, `teacher_num`, `cau_cla_teacher_intro`) values('6','10003','103306','10030','同上解释');


insert into `cause` (`cause_id`, `cause_name`, `cause_num`) values('1','语文','10001');
insert into `cause` (`cause_id`, `cause_name`, `cause_num`) values('2','数学','10002');
insert into `cause` (`cause_id`, `cause_name`, `cause_num`) values('3','物理','10003');

insert into `cause_table` (`cause_table_id`, `cascade_id`, `order_time`, `single_week_one`, `single_week_two`, `single_week_three`, `single_week_four`, `single_week_five`, `double_week_one`, `double_week_two`, `double_week_three`, `double_week_four`, `double_week_five`) values('1','7','1','1','3','1','5','1','5','1','1','1','3');
insert into `cause_table` (`cause_table_id`, `cascade_id`, `order_time`, `single_week_one`, `single_week_two`, `single_week_three`, `single_week_four`, `single_week_five`, `double_week_one`, `double_week_two`, `double_week_three`, `double_week_four`, `double_week_five`) values('2','7','2','4','2','6','4','2','6','4','2','4','2');
insert into `cause_table` (`cause_table_id`, `cascade_id`, `order_time`, `single_week_one`, `single_week_two`, `single_week_three`, `single_week_four`, `single_week_five`, `double_week_one`, `double_week_two`, `double_week_three`, `double_week_four`, `double_week_five`) values('3','7','3','2','4','1','2','3','1','2','3','2','4');
insert into `cause_table` (`cause_table_id`, `cascade_id`, `order_time`, `single_week_one`, `single_week_two`, `single_week_three`, `single_week_four`, `single_week_five`, `double_week_one`, `double_week_two`, `double_week_three`, `double_week_four`, `double_week_five`) values('4','7','4','3','1','4','3','4','4','3','4','3','1');
insert into `cause_table` (`cause_table_id`, `cascade_id`, `order_time`, `single_week_one`, `single_week_two`, `single_week_three`, `single_week_four`, `single_week_five`, `double_week_one`, `double_week_two`, `double_week_three`, `double_week_four`, `double_week_five`) values('5','8','1','4','4','4','2','4','4','2','4','4','4');
insert into `cause_table` (`cause_table_id`, `cascade_id`, `order_time`, `single_week_one`, `single_week_two`, `single_week_three`, `single_week_four`, `single_week_five`, `double_week_one`, `double_week_two`, `double_week_three`, `double_week_four`, `double_week_five`) values('6','8','2','1','1','1','3','3','1','3','3','1','1');
insert into `cause_table` (`cause_table_id`, `cascade_id`, `order_time`, `single_week_one`, `single_week_two`, `single_week_three`, `single_week_four`, `single_week_five`, `double_week_one`, `double_week_two`, `double_week_three`, `double_week_four`, `double_week_five`) values('7','8','3','6','3','5','1','2','5','1','2','6','3');
insert into `cause_table` (`cause_table_id`, `cascade_id`, `order_time`, `single_week_one`, `single_week_two`, `single_week_three`, `single_week_four`, `single_week_five`, `double_week_one`, `double_week_two`, `double_week_three`, `double_week_four`, `double_week_five`) values('8','8','4','2','6','4','1','6','4','1','2','2','2');


insert into `class` (`class_id`, `class_num`, `class_intro`) values('1','102307','某某某某大学 2 教 307');
insert into `class` (`class_id`, `class_num`, `class_intro`) values('2','103306','某某某某大学 3 教 306');
insert into `class` (`class_id`, `class_num`, `class_intro`) values('3','104401','某某某某大学 4 教 401');
insert into `class` (`class_id`, `class_num`, `class_intro`) values('4','101502','某某某某大学 1 教 502');
insert into `class` (`class_id`, `class_num`, `class_intro`) values('5','101503','某某某某大学 1 教 503');

insert into `order_time` (`order_time_id`, `time_part`) values('1','8:10-10:00');
insert into `order_time` (`order_time_id`, `time_part`) values('2','10:00-12:00');
insert into `order_time` (`order_time_id`, `time_part`) values('3','14:00-16:00');
insert into `order_time` (`order_time_id`, `time_part`) values('4','16:00-18:00');

insert into `sign_state` (`sign_state_id`, `sign_state_num`, `sign_state_name`) values('1','A','签到成功');
insert into `sign_state` (`sign_state_id`, `sign_state_num`, `sign_state_name`) values('2','B','未签到');
insert into `sign_state` (`sign_state_id`, `sign_state_num`, `sign_state_name`) values('3','C','迟到');
insert into `sign_state` (`sign_state_id`, `sign_state_num`, `sign_state_name`) values('4','D','旷课');

insert into `student` (`student_id`, `student_name`, `student_num`, `class_id`, `student_state`) values('1','Tom','1508010101','7','0');
insert into `student` (`student_id`, `student_name`, `student_num`, `class_id`, `student_state`) values('2','Thonr','1508010102','7','0');
insert into `student` (`student_id`, `student_name`, `student_num`, `class_id`, `student_state`) values('3','summer','1508010103','7','0');
insert into `student` (`student_id`, `student_name`, `student_num`, `class_id`, `student_state`) values('4','bob','1508010201','8','0');
insert into `student` (`student_id`, `student_name`, `student_num`, `class_id`, `student_state`) values('5','pop','1508010202','8','0');
insert into `student` (`student_id`, `student_name`, `student_num`, `class_id`, `student_state`) values('6','olo','1508010203','8','0');


insert into `sys_cascade` (`cascade_id`, `cascade_name`, `type_id`) values('1','某某某某大学','0');
insert into `sys_cascade` (`cascade_id`, `cascade_name`, `type_id`) values('2','计算机科学与技术学院','1');
insert into `sys_cascade` (`cascade_id`, `cascade_name`, `type_id`) values('3','软件工程专业','2');
insert into `sys_cascade` (`cascade_id`, `cascade_name`, `type_id`) values('4','计算机科学与技术专业','2');
insert into `sys_cascade` (`cascade_id`, `cascade_name`, `type_id`) values('5','网络工程专业','2');
insert into `sys_cascade` (`cascade_id`, `cascade_name`, `type_id`) values('6','信息技术与科学学院','2');
insert into `sys_cascade` (`cascade_id`, `cascade_name`, `type_id`) values('7','1501','3');
insert into `sys_cascade` (`cascade_id`, `cascade_name`, `type_id`) values('8','1502','3');

insert into `teacher` (`teacher_id`, `teacher_num`, `teacher_name`, `teacher_intro`) values('1','10010','张雪峰','张雪峰老师毕业某某某某大学。');
insert into `teacher` (`teacher_id`, `teacher_num`, `teacher_name`, `teacher_intro`) values('2','10020','李世光','李世光老师是在读博士生,毕业于某某某某大学。');
insert into `teacher` (`teacher_id`, `teacher_num`, `teacher_name`, `teacher_intro`) values('3','10030','王羲之','王羲之老师毕业于山西农林大学,先主要研究领域是数学。');

但是有些表示空的 这是后期通过签到情况自动存放的数据所以不需要。
效果就是

等等。

猜你喜欢

转载自blog.csdn.net/H2677lucy/article/details/82181944