1.关系模式介绍
关系模式,是指以一定方式组织的、有一定数据结构的、在数据处理中具有独立性的数据对象。关系模式是关系型数据库系统中最基本的概念之一,包括数据结构与数据操作两个部分。
下面通过图形的方式展现关系模式的基本结构。关系模式可以使用E-R(Entity-Relationship)模型表示,其中圆表示实体,方块表示属性,菱形表示关系。下面是一个简单的E-R模型示例图。
根据上图可以看出,关系模式由实体与属性构成,实体之间可以有多种关系。在实际操作中,关系模式可以使用SQL语言表示。
2. SQL语言介绍
SQL(Structured Query Language)是一种结构化查询语言,用来访问和操作数据库。标准SQL包括三个子语言:数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)。下面介绍DDL和DML两个子语言:
2.1 数据定义语言
数据定义语言(DDL)用于定义和管理数据库的结构,包括以下操作:
CREATE: 创建数据库、表、视图等对象。
ALTER:修改数据库、表、视图等对象的结构。
DROP:删除数据库、表、视图等对象。
下面是使用CREATE语句创建一个名为student的表的示例代码。
CREATE TABLE student(
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT,
gender CHAR(1)
);
2.2 数据操纵语言
数据操纵语言(DML)用于对数据库中的数据进行增、删、改、查等操作,包括以下操作:
INSERT:向表中插入数据。
UPDATE:修改表中的数据。
DELETE:删除表中的数据。
SELECT:查询表中的数据。
下面是使用INSERT语句向student表中插入数据的示例代码。
INSERT INTO student(id, name, age, gender)
VALUES (1, '张三', 20, 'M'), (2, '李四', 21, 'M'), (3, '小红', 19, 'F');
3. 数据库关系模式示例
下面以学生信息管理系统为例,展示一个包含多个表的数据库关系模式。
3.1 学生表(student)
CREATE TABLE student(
s_id INT PRIMARY KEY,
s_name VARCHAR(50) NOT NULL,
gender CHAR(1) NOT NULL,
age INT NOT NULL,
d_id INT NOT NULL,
FOREIGN KEY (d_id) REFERENCES department(d_id) ON DELETE CASCADE ON UPDATE CASCADE
);
上述代码中,使用CREATE语句创建了一个名为student的表,包含学生id、姓名、性别、年龄、所属院系id。其中PRIMARY KEY约束设定了主键,FOREIGN KEY约束设定了外键。外键关联了department表中的院系id,表示该学生所属的院系。使用ON DELETE CASCADE和ON UPDATE CASCADE设置了级联删除和级联更新。如果删除或更新了department表中的一个院系,其关联的学生信息表中也会同步删除或更新相应的信息。
3.2 课程表(course)
CREATE TABLE course(
c_id INT PRIMARY KEY,
c_name VARCHAR(50) NOT NULL,
t_id INT NOT NULL,
FOREIGN KEY (t_id) REFERENCES teacher(t_id) ON DELETE SET NULL ON UPDATE CASCADE
);
上述代码中,使用CREATE语句创建了一个名为course的表,包含课程id、课程名称、任课教师id。其中PRIMARY KEY约束设定了主键,FOREIGN KEY约束设定了外键。外键关联了teacher表中的教师id,表示该课程由哪个教师授课。使用ON DELETE SET NULL和ON UPDATE CASCADE设置了级联设空和级联更新。如果删除或更新了teacher表中的一个教师,其关联的课程信息表中任课教师的id将被设为空(NULL),或者更新为新的教师id。
3.3 教师表(teacher)
CREATE TABLE teacher(
t_id INT PRIMARY KEY,
t_name VARCHAR(50) NOT NULL,
gender CHAR(1) NOT NULL,
age INT NOT NULL,
title VARCHAR(50) NOT NULL,
d_id INT NOT NULL,
FOREIGN KEY (d_id) REFERENCES department(d_id) ON DELETE SET NULL ON UPDATE CASCADE
);
上述代码中,使用CREATE语句创建了一个名为teacher的表,包含教师id、姓名、性别、年龄、职称、所属院系id。其中PRIMARY KEY约束设定了主键,FOREIGN KEY约束设定了外键。外键关联了department表中的院系id,表示该教师所属的院系。使用ON DELETE SET NULL和ON UPDATE CASCADE设置了级联设空和级联更新。如果删除或更新了department表中的一个院系,其关联的教师信息表中所属院系的id将被设为空(NULL),或者更新为新的院系id。
3.4 选课表(selection)
CREATE TABLE selection(
s_id INT NOT NULL,
c_id INT NOT NULL,
grade INT NOT NULL,
PRIMARY KEY (s_id, c_id),
FOREIGN KEY (s_id) REFERENCES student(s_id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (c_id) REFERENCES course(c_id) ON DELETE CASCADE ON UPDATE CASCADE
);
上述代码中,使用CREATE语句创建了一个名为selection的表,包含学生id、课程id、成绩等信息。其中PRIMARY KEY约束设定了联合主键,由学生id和课程id组合而成。FOREIGN KEY约束分别关联了student表和course表中的主键,表示该学生选择该课程。使用ON DELETE CASCADE和ON UPDATE CASCADE设置了级联删除和级联更新。如果删除或更新了学生信息表中的一个学生或者课程信息表中的一门课程,其关联的选课信息表中也会同步删除或更新相应的信息。
4. 总结
关系模式是关系型数据库系统中最基本的概念之一,使用E-R模型可以直观地展示关系模式的结构。SQL语言是访问和操作数据库的标准语言,包括三个子语言:DDL、DML、DCL。数据库关系模式是数据库中最重要也是最复杂的一个部分,一个完整的关系模式包括多个表,通过各种约束(例如主键、外键、级联操作等)来确保数据的完整性和可靠性。在实际开发中,开发人员需要灵活运用SQL语言和关系模式设计知识,构建出高效、稳定的数据库系统。