drop table course; drop table student; drop table teacher; drop table sc; create table student( sno varchar2(10) primary key, sname varchar2(20), sage number(2), ssex varchar2(5) ); create table teacher( tno varchar2(10) primary key, tname varchar2(20) ); create table course( cno varchar2(10), cname varchar2(20), tno varchar2(20), constraint pk_course primary key (cno,tno) ); create table sc( sno varchar2(10), cno varchar2(10), score number(4,2), constraint pk_sc primary key (sno,cno) ); /*******初始化学生表的数据******/ insert into student values ('s001','张三',23,'男'); insert into student values ('s002','李四',23,'男'); insert into student values ('s003','吴鹏',25,'男'); insert into student values ('s004','琴沁',20,'女'); insert into student values ('s005','王丽',20,'女'); insert into student values ('s006','李波',21,'男'); commit; /******************初始化教师表***********************/ insert into teacher values ('t001', '刘阳'); insert into teacher values ('t002', '谌燕'); insert into teacher values ('t003', '胡明星'); commit; /***************初始化课程表****************************/ insert into course values ('c001','J2SE','t002'); insert into course values ('c002','Java Web','t002'); insert into course values ('c003','SSH','t001'); insert into course values ('c004','Oracle','t001'); insert into course values ('c005','SQL SERVER 2005','t003'); insert into course values ('c006','C#','t003'); commit; /***************初始化成绩表***********************/ insert into sc values ('s001','c001',78.9); insert into sc values ('s001','c003',59); insert into sc values ('s001','c002',82.9); insert into sc values ('s001','c004',78); insert into sc values ('s001','c005',68); insert into sc values ('s001','c006',82); insert into sc values ('s002','c001',80.9); insert into sc values ('s002','c002',72.9); insert into sc values ('s002','c004',79); insert into sc values ('s003','c001',81.9); insert into sc values ('s003','c002',81.9); insert into sc values ('s003','c003',85);
时间: 2025-05-05 19:47:01 浏览: 41
### 关系型数据库设计示例
以下是基于学生、教师、课程和成绩表的关系型数据库设计方案以及相应的 SQL 初始化脚本。
#### 数据库设计说明
为了实现对学生、教师、课程和成绩的管理,需要创建四个主要表格:`students` 表用于存储学生信息;`teachers` 表用于存储教师信息;`courses` 表用于记录课程详情;`grades` 表则关联学生与课程的成绩信息。这些表通过外键相互连接,形成规范化的关系模型[^1]。
#### SQL 脚本
```sql
-- 创建数据库
CREATE DATABASE school_db CHARACTER SET utf8;
USE school_db;
-- 学生表 (students)
CREATE TABLE students (
student_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
gender ENUM('M', 'F') NOT NULL,
birth_date DATE,
major VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 教师表 (teachers)
CREATE TABLE teachers (
teacher_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
department VARCHAR(100),
hire_date DATE,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 课程表 (courses)
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100) NOT NULL,
description TEXT,
credit_hours INT,
teacher_id INT,
FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id) ON DELETE CASCADE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 成绩表 (grades)
CREATE TABLE grades (
grade_id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT,
course_id INT,
score DECIMAL(5, 2),
grade CHAR(2), -- A+, B-, F 等
comment TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (student_id) REFERENCES students(student_id) ON DELETE CASCADE,
FOREIGN KEY (course_id) REFERENCES courses(course_id) ON DELETE CASCADE
);
```
#### 插入初始数据
以下是一些示例数据插入语句:
```sql
-- 插入学生活动
INSERT INTO students (name, gender, birth_date, major) VALUES ('Alice Johnson', 'F', '2000-07-15', 'Computer Science');
INSERT INTO students (name, gender, birth_date, major) VALUES ('Bob Smith', 'M', '1999-03-22', 'Mathematics');
-- 插入教师活动
INSERT INTO teachers (name, department, hire_date, email) VALUES ('Dr. Jane Doe', 'Physics Department', '2015-06-10', '[email protected]');
INSERT INTO teachers (name, department, hire_date, email) VALUES ('Prof. John Brown', 'Chemistry Department', '2010-08-15', '[email protected]');
-- 插入课程活动
INSERT INTO courses (title, description, credit_hours, teacher_id) VALUES ('Quantum Mechanics', 'Introduction to quantum theory.', 4, 1);
INSERT INTO courses (title, description, credit_hours, teacher_id) VALUES ('Organic Chemistry', 'Study of organic compounds and reactions.', 3, 2);
-- 插入学生成绩活动
INSERT INTO grades (student_id, course_id, score, grade) VALUES (1, 1, 92.5, 'A+');
INSERT INTO grades (student_id, course_id, score, grade) VALUES (2, 2, 78.0, 'B-');
```
以上脚本涵盖了从数据库创建到表定义再到数据插入的过程。 若要退出 MySQL 控制台,可执行 `exit` 命令[^2]。
---
阅读全文
相关推荐



















