E-R图:
将 E-R 模型转换成关系数据模型,并指出每一个关系的主码和外码(如果存在):
- 系(Department):主码为系号(Dept_id)
- 教师(Teacher):主码为教师号(Teacher_id),外码为系号(Dept_id)
- 简历(Resume):主码为(Teacher_id,起始时间,终止时间),外码为教师号(Teacher_id)
- 项目(Project):主码为项目号(Project_id)
- 参加(Participate):联合主码为(项目号,教师号),外码分别为项目号(Project_id)和教师号(Teacher_id)
代码实现:
CREATE TABLE Department (
Dept_id INT PRIMARY KEY,
Dept_name VARCHAR(50)
);
CREATE TABLE Teacher (
Teacher_id INT PRIMARY KEY,
Name VARCHAR(50),
Gender VARCHAR(10),
Title VARCHAR(50),
Dept_id INT,
FOREIGN KEY (Dept_id) REFERENCES Department(Dept_id)
);
CREATE TABLE Resume (
Teacher_id INT,
Start_time DATE,
End_time DATE,
Workplace VARCHAR(100),
Position VARCHAR(50),
PRIMARY KEY (Teacher_id, Start_time, End_time),
FOREIGN KEY (Teacher_id) REFERENCES Teacher(Teacher_id)
);
CREATE TABLE Project (
Project_id INT PRIMARY KEY,
Project_name VARCHAR(100),
Source VARCHAR(100),
Funding DECIMAL(10, 2),
Leader INT
);
CREATE TABLE Participate (
Project_id INT,
Teacher_id INT,
PRIMARY KEY (Project_id, Teacher_id),
FOREIGN KEY (Project_id) REFERENCES Project(Project_id),
FOREIGN KEY (Teacher_id) REFERENCES Teacher(Teacher_id)
);
E-R图:
将 E-R 模型转换为关系模型,并确保满足第三范式(3NF):
- Athlete( Athlete_id, Name, Gender, Team )
关键字:Athlete_id
- Event( Event_id, Name, Time, Location )
关键字:Event_id
- Participation( Athlete_id, Event_id, Performance )
关键字:Athlete_id, Event_id
代码实现:
CREATE DATABASE sports_management;
USE sports_management;
CREATE TABLE Athlete (
Athlete_id INT PRIMARY KEY,
Name VARCHAR(50),
Gender CHAR(1),
Team VARCHAR(50)
);
CREATE TABLE Event (
Event_id INT PRIMARY KEY,
Name VARCHAR(50),
Time DATETIME,
Location VARCHAR(100)
);
CREATE TABLE Participation (
Athlete_id INT,
Event_id INT,
Performance VARCHAR(100),
PRIMARY KEY (Athlete_id, Event_id),
FOREIGN KEY (Athlete_id) REFERENCES Athlete(Athlete_id),
FOREIGN KEY (Event_id) REFERENCES Event(Event_id)
);