【无标题】

3.4.5 课后练习题

某学校要设计一个数据库,学校的业务规则概括如下:

学校内班级若干,每个班级内又有学生若干。

学校开设课程若千,只有某些特定的班级能上指定的课程。

学生选修某些课程,但是在自身班级下的课程是必修。

学校定期组织考试,成绩要括所有学生所有课程的考试成绩。


    系  科目   学生   成绩

    系:系编号(PK) 系名称
    科目:科目编号(PK) 科目名称  学习时长  系编号
    学生:学号(PK) 密码  姓名  性别  系编号 联系电话  生日  邮箱  身份证号码 住址
    成绩:学号(FK) 科目号(FK) 考试日期 考试成绩

所属关系
    1系>>>N学生         主从关系
    1系>>>N科目
    1学生>>>N成绩
    1科目>>>N成绩
      N学生<<<>>>N科目
    


1:建库 
        CREATE DATABASE Myschool_db;
2:建表
        2.1创建年级表
                CREATE TABLE grade(
                GradeID INT  NOT NULL AUTO_INCREMENT COMMENT '年级编号',
                    GradeName VARCHAR(50) CHARACTER SET utf8mb4 COLLATE                 utf8mb4_general_ci NOT NULL COMMENT '年级名称',
                    PRIMARY KEY (GradeID)
                ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE                 = utf8mb4_general_ci;

        2.2创建科目表
DROP TABLE IF EXISTS subject;
CREATE TABLE subject  (
  SubjectNo int NOT NULL AUTO_INCREMENT COMMENT '课程编号',
  SubjectName varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '课程名称',
  ClassHour int NULL DEFAULT NULL COMMENT '学时',
  GradeID int NULL DEFAULT NULL COMMENT '年级编号',
  PRIMARY KEY (SubjectNo)
) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci

        2.3创建学生表
DROP TABLE IF EXISTS student;
CREATE TABLE student  (
  StudentNo int(0) NOT NULL COMMENT '学号',
  LoginPwd varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  StudentName varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '学生姓名',
  Sex tinyint(1) NULL DEFAULT NULL COMMENT '性别,取值0或1',
  GradeId int(0) NULL DEFAULT NULL COMMENT '年级编号',
  Phone varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联系电话,允许为空,即可选输入',
  Address varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '地址,允许为空,即可选输入',
  BornDate datetime(0) NULL DEFAULT NULL COMMENT '出生时间',
  Email varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱账号,允许为空,即可选输入',
  IdentityCard varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '身份证号',
  PRIMARY KEY (StudentNo) USING BTREE,
  UNIQUE INDEX IdentityCard(IdentityCard) USING BTREE,
  INDEX Email(Email) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

        2.4创建成绩表
CREATE TABLE `result`  (
  `StudentNo` int(0) NOT NULL COMMENT '学号',
  `SubjectNo` int(0) NOT NULL COMMENT '课程编号',
  `ExamDate` datetime(0) NOT NULL COMMENT '考试日期',
  `StudentResult` int(0) NOT NULL COMMENT '考试成绩',
  INDEX `SubjectNo`(`SubjectNo`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci

>>>>>>
为subject表添加外键约束
ALTER TABLE subject ADD CONSTRAINT fk_subgra FOREIGN KEY (GradeID) REFERENCES grade (GradeID);
为student表添加外键约束
ALTER TABLE student ADD CONSTRAINT fk_stugra FOREIGN KEY (GradeID) REFERENCES grade (GradeID);

  • 33
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值