4.1 MySQL关系模型的基本原理(一个案例说明白)


4.1 MySQL关系模型的基本原理

  • MySQL是一种流行的关系型数据库管理系统(RDBMS),它遵循关系模型的基本原理来组织和存储数据。关系模型是由埃德加·科德(Edgar F. Codd)在1970年代提出的,它使用表格的形式来表示数据,这些表格称为关系。下面是关于MySQL关系模型的基本原理的详细解释:

4.1.1 基本术语

  1. 关系(Relation):关系是一张二维表,它由行(记录)和列(属性)组成。每列代表一个属性,每行代表一个元组。

  2. 元组(Tuple):元组是关系中的一行,它代表了一个数据项。

  3. 属性(Attribute):属性是关系中的一列,它代表了一个数据特征。

  4. 域(Domain):域是一组具有相同数据类型的值的集合,每个属性都有一个域。

  5. 主键(Primary Key):主键是关系中的一个或一组属性,它的值可以唯一地标识关系中的每个元组。

  6. 外键(Foreign Key):外键是一个或一组属性,它在一个关系中引用另一个关系的主键。

  7. 候选键(Candidate Key):候选键是能够唯一标识关系中每个元组的属性组合。

  8. 关系模式(Relational Schema):关系模式是对关系的描述,包括关系名、属性名、属性的数据类型和主键。

4.1.2 关系的特征

  1. 二维表结构:关系模型中的数据以表格的形式存储,每个表格由行和列组成。

  2. 每列的唯一性:每个列都有一个唯一的列名,并且每个列的值必须来自同一个域。

  3. 每行的唯一性:每个元组都有一个唯一的主键,它可以用来区分表中的不同行。

  4. 无重复行:表中的每一行都是唯一的,没有完全相同的两行

  5. 列的顺序无关紧要:列的顺序不影响数据的意义。

  6. 行的顺序无关紧要:行的顺序不影响数据的意义。

案例文字详解

假设我们有一个图书馆管理系统,我们需要存储图书信息和借阅者信息。我们可以创建两个关系:BooksBorrowers

Books 表

  • BookID (主键):每本书的唯一标识符。
  • Title:书名。
  • Author:作者。
  • ISBN:国际标准书号。

Borrowers 表

  • BorrowerID (主键):每个借阅者的唯一标识符。
  • Name:借阅者姓名。
  • Address:借阅者地址。

借阅关系(Borrowing)

  • BorrowerID (外键,引用 Borrowers 表):借阅者的标识符。
  • BookID (外键,引用 Books 表):被借阅的书的标识符。
  • BorrowDate:借阅日期。
  • ReturnDate:归还日期。

好的,让我们通过MySQL代码来演示如何创建上述案例中的表,并展示一些基本的SQL操作。

创建表

首先,我们需要创建BooksBorrowersBorrowing三个表。

-- 创建Books表
CREATE TABLE Books (
    BookID INT AUTO_INCREMENT PRIMARY KEY,
    Title VARCHAR(255) NOT NULL,
    Author VARCHAR(255) NOT NULL,
    ISBN VARCHAR(20) UNIQUE NOT NULL
);

-- 创建Borrowers表
CREATE TABLE Borrowers (
    BorrowerID INT AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(255) NOT NULL,
    Address VARCHAR(255) NOT NULL
);

-- 创建Borrowing表
CREATE TABLE Borrowing (
    BorrowerID INT,
    BookID INT,
    BorrowDate DATE NOT NULL,
    ReturnDate DATE,
    FOREIGN KEY (BorrowerID) REFERENCES Borrowers(BorrowerID),
    FOREIGN KEY (BookID) REFERENCES Books(BookID),
    PRIMARY KEY (BorrowerID, BookID)
);

插入数据

接下来,我们向这些表中插入一些示例数据。

-- 向Books表中插入数据
INSERT INTO Books (Title, Author, ISBN) VALUES
('The Great Gatsby', 'F. Scott Fitzgerald', '9780743273565'),
('1984', 'George Orwell', '9780451524935'),
('To Kill a Mockingbird', 'Harper Lee', '9780060935467');

-- 向Borrowers表中插入数据
INSERT INTO Borrowers (Name, Address) VALUES
('Alice Johnson', '123 Maple Street'),
('Bob Smith', '456 Oak Avenue'),
('Charlie Brown', '789 Pine Road');

-- 向Borrowing表中插入数据
INSERT INTO Borrowing (BorrowerID, BookID, BorrowDate, ReturnDate) VALUES
(1, 1, '2024-01-01', '2024-01-15'),
(2, 2, '2024-01-05', NULL),
(3, 3, '2024-01-10', '2024-01-20');

查询数据

现在,我们可以执行一些查询操作来检索数据。

-- 查询所有书籍
SELECT * FROM Books;

-- 查询所有借阅者
SELECT * FROM Borrowers;

-- 查询所有借阅记录
SELECT * FROM Borrowing;

-- 查询特定借阅者借阅的书籍
SELECT b.Name, bk.Title, bk.Author, br.BorrowDate, br.ReturnDate
FROM Borrowers b
JOIN Borrowing br ON b.BorrowerID = br.BorrowerID
JOIN Books bk ON br.BookID = bk.BookID
WHERE b.Name = 'Alice Johnson';

-- 查询所有未归还的书籍
SELECT bk.Title, bk.Author, br.BorrowDate, br.ReturnDate
FROM Books bk
JOIN Borrowing br ON bk.BookID = br.BookID
WHERE br.ReturnDate IS NULL;

更新数据

我们还可以更新表中的数据,例如,更新归还日期。

-- 更新归还日期
UPDATE Borrowing
SET ReturnDate = '2024-02-01'
WHERE BorrowerID = 2 AND BookID = 2;

删除数据

最后,我们可以删除表中的数据。

-- 删除一条借阅记录
DELETE FROM Borrowing
WHERE BorrowerID = 3 AND BookID = 3;

-- 删除一本书
DELETE FROM Books
WHERE BookID = 3;

-- 删除一个借阅者
DELETE FROM Borrowers
WHERE BorrowerID = 3;

这些代码示例展示了如何在MySQL中创建表、插入数据、查询数据、更新数据和删除数据。这些操作是关系型数据库管理系统中的基本操作。

在这个案例中,BooksBorrowers 表通过 Borrowing 表关联起来,形成了一个关系模型。每个表都有主键来唯一标识每条记录,而 Borrowing 表则包含了外键,用来引用其他两个表的主键,从而建立起关系。

这种模型的优点是它提供了一种结构化的方式来组织数据,使得数据的查询、更新和管理变得更加高效和灵活。同时,它也支持复杂的查询操作,如连接(Join)、选择(Select)、投影(Project)和除法(Divide)等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值