数据库是用于存储、管理和检索数据的系统,广泛应用于各类信息系统中。以下是关于数据库核心概念的简要介绍:
-
数据库概念
数据库(Database, DB)是一个长期存储在计算机内、有组织的、可共享的数据集合。数据库管理系统(DBMS)是管理数据库的软件,提供数据定义、操作、查询和控制功能。常见的DBMS包括MySQL、PostgreSQL、Oracle、SQL Server等。 -
数据模型
数据模型描述数据的结构、关系、约束和操作方式。主要类型有:- 层次模型:树形结构。
- 网状模型:图结构。
- 关系模型:表格形式(最常用),由行和列组成。
- 面向对象模型:将数据封装为对象。
- 实体-联系模型(E-R模型):用于数据库设计的概念模型。
-
SQL(结构化查询语言)
SQL 是用于管理和操作关系型数据库的标准语言,主要包括以下部分:- DDL(数据定义语言):CREATE、ALTER、DROP(定义表结构)
- DML(数据操纵语言):INSERT、UPDATE、DELETE(操作数据)
- DQL(数据查询语言):SELECT(查询数据)
- DCL(数据控制语言):GRANT、REVOKE(权限管理)
- TCL(事务控制语言):COMMIT、ROLLBACK(事务管理)
-
规范化(Normalization)
规范化是为了减少数据冗余、提高数据一致性的设计过程,常见范式包括:- 第一范式(1NF):原子性,字段不可再分。
- 第二范式(2NF):满足1NF且非主属性完全依赖于主键。
- 第三范式(3NF):满足2NF且非主属性不传递依赖于主键。
- 更高范式如BCNF、4NF等适用于复杂场景。
-
事务处理(Transaction Processing)
事务是一组作为单个逻辑工作单元执行的操作,具有ACID特性:- 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成。
- 一致性(Consistency):事务前后数据库状态保持一致。
- 隔离性(Isolation):并发事务之间互不干扰。
- 持久性(Durability):事务一旦提交,其结果永久保存。
-- 示例:一个典型的事务操作
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
COMMIT;
ER图(Entity-Relationship Diagram,实体-联系图)是一种用于描述现实世界中数据及其关系的概念模型工具,由彼得·陈(Peter Chen)于1976年提出。它主要用于数据库设计的前期阶段,帮助分析和可视化数据需求。
ER图的核心要素:
-
实体(Entity)
表示现实世界中可区分的对象,如“学生”、“课程”、“订单”。在图中用矩形表示。 -
属性(Attribute)
描述实体的特征,如“学生”有学号、姓名、年龄等。用椭圆表示,连接到对应实体。 -
联系(Relationship)
表示实体之间的关联关系,如“学生选修课程”。用菱形表示,并连接相关实体。 -
主键(Primary Key)
唯一标识一个实体的属性,通常加下划线标注。 -
基数约束(Cardinality)
描述实体间联系的数量关系,常见类型:- 一对一(1:1)
- 一对多(1:N)
- 多对多(M:N)
如何使用ER图进行数据库设计?
-
需求分析
明确系统需要管理哪些数据对象(实体)以及它们之间的关系。 -
识别实体与属性
例如,在学校管理系统中:- 实体:学生、教师、课程
- 属性:学生(学号, 姓名, 年龄);课程(课程号, 课程名)
-
确定实体间的联系
- 学生 —— 选修 —— 课程(多对多)
- 教师 —— 教授 —— 课程(一对多)
-
绘制ER图
使用标准符号绘制实体、属性和联系,标明主键和基数。 -
转换为关系模式(表结构)
- 每个实体转化为一张表。
- 联系根据类型处理:
- 1:1 或 1:N:可通过外键实现。
- M:N:需创建中间关联表(如“选课”表包含学号和课程号)。
-
规范化处理
对生成的表进行规范化(如达到3NF),消除冗余。 -
物理实现
使用SQL在DBMS中创建表、定义约束(主键、外键)、索引等。
示例:学生选课系统的ER图片段
[学生] ----<选修>---- [课程]
| |
学号(主键) 课程号(主键)
姓名 课程名
年龄
→ 转换为表:
CREATE TABLE 学生 (
学号 VARCHAR(10) PRIMARY KEY,
姓名 VARCHAR(50),
年龄 INT
);
CREATE TABLE 课程 (
课程号 VARCHAR(10) PRIMARY KEY,
课程名 VARCHAR(100)
);
CREATE TABLE 选修 (
学号 VARCHAR(10),
课程号 VARCHAR(10),
成绩 DECIMAL(5,2),
PRIMARY KEY (学号, 课程号),
FOREIGN KEY (学号) REFERENCES 学生(学号),
FOREIGN KEY (课程号) REFERENCES 课程(课程号)
);
ER图是连接业务需求与数据库实现的重要桥梁,有助于团队沟通并确保设计的合理性。



被折叠的 条评论
为什么被折叠?



