数据库(Database)是存储在计算机内有结构的数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为多个用户共享。
数据库管理系统(Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。
数据库系统(Database System):由数据库、数据库管理系统以及其开发工具、应用系统、数据库管理员构成。其中,数据库系统软件包括数据库管理系统、开发工具和数据库应用系统。
一个完整的数据库系统一般由数据库、操作系统、数据库管理系统、应用开发工具、应用系统、数据库管理员和用户组成。
关系数据库(Relational Database,RDB):目前应用最广泛的数据库。
关系(Relation)是笛卡尔积的有限子集。是若干元组的集合,形象地说是一个表(table)。
每一行(row)对应一个元组(tuple),是无序的(unordered)即不讲循序;列(column)也是无序的的,每一列的值(value)来自一个域(Domain,一组具有相同数据类型的值的集合)。
关系具有以下的性质:
列的同质性:每一列中的分量是同一类型的数据,来自同一个域。
列名唯一性:每一列具有不同的属性名,但不同列的值可以来自同一个域。
元组相异性:关系中任意两个元组的候选键不能相同。
行的无序性:行的次序可以互换。
列的无序性:列的次序可以互换。
分量原子性:分量值是原子的,即每一个分量都必须是不可分的数据项。
关系模型(Relational model)关系模型是指用二维表的形式表示实体和实体间联系的数据模型。关系模型中无论是实体还是实体间的联系均由单一的结构类型——关系来表示。在实际的关系数据库中的关系也称表。
关系模式(Relation Schema)是对关系的描述。关系的描述称为关系模式(Relation Schema)它可以形式化地表示为:
R(U,D,dom,F)
其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。
通常简记为:
R(U)或R(A1,A2,…,An)
其中R为关系名,U为属性名集合,A1,A2,…,An为各属性名。关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、 随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。
关于数据库系统模式(schema)和模型(Model)详见https://blog.csdn.net/cnds123/article/details/46678367
候选键(Candidate key) 若关系中某一属性组的值能唯一地标识一个元组,则称该属性组为候选键。
候选键键中的诸属性称为主属性(Prime attribute),不包含在任何候选键中的属性称为非主属性(Non-prime attribute)或非键属性((Non-key attribute)。 在最简单的情况下,候选键只包含一个属性,在最极端的情况下,关系模式的所有属性 组成这个关系模式的候选键,称为全键(All-key)。
主键(Primary key) 在一个关系中有多个候选键,从中选定一个作为主键。
关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、 随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。
外键(Foreign Key):关系R中的一个属性组,它不是R的候选键,但它与另一个关系S的候选键相对应,则称这个属性组为R的外键(外码)。关系R称为参照关系(参照表、从表),关系S称为被参照关系(被参照表、主表)。
外键是指一个表(从表)中的一列或列组合,它虽不是该表的主键,但却是另一个表(主表)的主键。通过外键约束可以为相关联的两个表建立联系,实现数据的引用完整性,维护两表之间数据的一致性关系。
特别说明:键也有人称为码(key:键,码)。学习数据库知识时,经常遇到大量可能令初学者疑惑的术语,尽早了解可能更好的减少学习过程中的困惑误解。有关详情可见
https://blog.csdn.net/cnds123/article/details/39827049
规范化
关系模型要求关系必须是规范化(normalization)的,规范化要求关系必须满足一定的规 范条件,而在规范条件中最基本的一条是每一个分量必须是不可分的数据项。规范化的关系简 称为范式(Normal Form)。
关于规范化详见 https://blog.csdn.net/cnds123/article/details/106450695
数据库中的E-R图
E-R(Entity-Relationship实体-关系)图,用于和项目团队的其他成员及客户沟通,讨论数据库设计是否满足客户的业务和数据处理需求,主要由一些含有特殊含义的图形符号构成。
其中:
1、实体:指现实世界中具有区分其他事物的特征或属性并与其他事物有联系事物。
实体一般是名词,对应表中的一行数据
2、属性:实体的特征
属性对应表中的列
3、联系:指两个或多个实体之间的关联关系
实体用矩形表示,一般是名词
属性用椭圆形表示,一般也是名词
联系用菱形表示,一般是动词
4、映射基数:表示通过联系与该实体关联的其他实体的个数。
对于实体集X与Y之间的关系有以下三个:一对一、一对多、多对多。
提示:relationship和relation通常都翻译为关系,但在数据库中两者含义不同。relationship[关系;联系;关联],在数据库中指不同表之间的数据彼此联系的方法。数据库表之间的表之间的relationship有:一对一、一对多、多对多。relation[关系],在数据库指表,从本质上说,关系是一个包含行和列的二维表或数组。应根据语境区别理解。
数据库设计
数据库设计的基本步骤/阶段
☆需求分析:通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求。
☆概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型。如采用E-R模型进行设计,画E-R图。
☆逻辑结构设计:将概念结构转换为某个数据库管理系统所支持的数据模型,并对其进行优化。通过将E-R图转换成表,实现从E-R模型到关系模型的转换。
☆物理结构设计:为逻辑数据结构选取一个最适合应用环境的物理结构,包括存储结构和存取方法。
☆数据库实施:根据逻辑设计和物理设计的结果构建数据库,编写与调试应用程序,组织数据入库并进行试运行。
☆数据库运行和维护:经过试运行后即可投入正式运行,在运行过程中必须不断对其进行评估、调整与修改。
需求分析和概念设计独立于任何数据库管理系统;逻辑设计和物理设计与选用的数据库管理系统密切相关。
关于数据库设计详见 https://blog.csdn.net/qq_42192693/article/details/109720940
关系模型中关系的完整性约束
关系模型中三类完整性约束:
1 实体完整性(Entity Integrity)
2 参照完整性(Referential Integrity)
3 用户定义的完整性(User-defined Integrity)也有人称为域完整性(Domain Integrity)
数据库中的域(Domain):属性(也称为数据表的列、字段)的取值范围,如性别的男女。实际上,数据表中字段(列)的数据类型也是一种域约束。
关于关系模型中关系的完整性约束 详见 https://blog.csdn.net/cnds123/article/details/114336832
关系数据库标准语言SQL的组成
(1)DDL(Data Definition Language,数据定义语言):创建、删除或修改数据库以及数据库中的表等对象。
①CREATE:创建数据库和表等对象
②DROP:删除数据库和表等对象
③ALTER:修改数据库和表等对象
(2)DML(Data Manipulation Language,数据操作语言):查询或修改表中的记录。
①SELECT:查询表中的数据
②INSERT:向表中插入数据
③UPDATE:修改表中的数据
④DELETE:删除表中的数据
(3)DCL(Data Control Language,数据控制语言):确认或取消对数据库中的数据变更的执行操作,以及对用户的操作数据库中的对象权限进行设定。
①COMMIT:确认对数据库中的数据进行的变更
②ROLLBACK:取消对数据库中的数据进行的变更
③GRANT:赋予用户的操作权限
④REVOKE:取消用户的操作权限
SQL 语句书写规范:
①序号以分号(;)结尾;
②大小写不敏感,不区分关键字的大小写,但有人建议关键字大写;【注意】插入到表中的数据是区分大小写的,如“HI”、“Hi”和“hi”都不同。
③字符串、日期:用单引号括起来('),如'Hello','2021-09-24'。
数字:直接书写,不用加单引号,如:50。
数据库事务(transactional)拥有以下四个特性,习惯上被称之为ACID特性。
原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。
SQL国际标准使用START TRANSACTION开始一个事务(也可以用方言命令BEGIN)。COMMIT语句使事务成功完成。ROLLBACK语句结束事务,放弃从BEGIN TRANSACTION开始的一切变更。在启动事务后,数据库记录或对象会被锁定, 只读,或读写。然后才可以进行读写操作。一旦事务完全完成,变化就会被原子性地提交或回滚,这样在事务结束时就不会出现不一致的情况。
关于数据库事务的概念及其实现原理 可详见 https://www.cnblogs.com/takumicx/p/9998844.html