前言
学习数据库系统,记录笔记。
参考资料:
《数据库系统(设计、实现与管理 第6版, Thomas M.Connolly, Carolyn E.Begg)》
第一章:数据库简介
相关概念
-
数据(Data):Data are raw facts that describe people, objects and events.(数据是描述人、物和事件的原始事实。)
-
数据存储:计算机存储数据的方式可以分为两种:内存(暂时存储、掉电数据丢失),外存(永久存储,掉电数据不丢失)
-
数据库(DB):数据存储的仓库
数据的传递如下图:
信息系统包含:
- 事务处理系统(TPS)
- 在线事务处理系统(OLTP)
- 供应链管理系统(SCM)
- 客户关系管理系统(CRM)
- 企业资源规划系统(ERP)
运行数据库可以操作数据:
收集、存储、查看、查找、更新、整理、分类、移动、删除
分析数据库可以提取分析数据:
- 数据挖掘(Data Mining):找数据关系和模式
- 预测分析(Predictive Analytics):分析历史和现在,预测未来
- 在线分析处理(OLAP):复杂因素检测
-
数据库系统(DBS):由硬件系统、数据库、数据库管理系统、数据库应用程序、数据库用户等组成的系统。
数据库系统的结构层次如下图:
基于Web的数据库应用系统工作流程如下:
-
数据库管理系统(DBMS):A collection of programs that controls,create,maintain,and manipulate databases(一种控制、管理、创建、维护和使用数据库的大型软件)
- 合理管理和控制数据库中数据
- 保证数据库中数据的准确、安全、一致性,高效地利用数据
- 建立在操作系统之上
- 用户或应用程序发出操作数据库中数据的命令都要通过数据库管理系统来执行
- 数据的查询是通过数据库管理系统,而并非从数据库直接查询
数据库管理系统的功能:
- 存储、检索、更新数据:用户通过数据库管理系统访问数据库
- 事务支持:把用户或应用程序的一系列动作看成一个事务
- concurrency control under multiple users (多用户并发控制):多用户并行更新数据库且更新正确
- Integrity(完整性):确保数据库中数据及其的更改遵循规则
- Views(视图):实现程序和数据的独立,隐藏数据的安全机制
- Authorization(授权):授权用户才可以访问
- Access controls(访问控制):Based on the granting and revoking of privileges.(基于权限的授予和回收)
- Backup and recovery(备份和恢复):数据库受到破坏后被恢复
- Encryption(加密):使用特殊算法对数据进行编码,使没有解密密钥的任何程序都无法读取数据。
实现流程
数据库实现流程主要分为系统设计阶段以及系统实现两个部分:
- 系统设计:又分为3个阶段
- 概念数据库设计:所用方法为E-R建模模型
- 逻辑数据库设计:所用方法为规范化模式
- 物理数据库设计
- 系统实现:依靠数据库语言来实现
- 建立数据库的方法:数据库定义语言(DDL)
- 操作数据库的方法:数据库操作语言(DML)
数据库设计
数据库设计要分为三个层次(三层体系结构 The Three-level ANSI-SPARC Achitecture):
- 外部层(用户级)(不唯一):数据库中的部分信息,并非所有信息。
- Users’view of the database.(用户视图)
- Describes that part of database that is relevant to a particular user.(和用户相关的数据库部分)
- 子模式:从模式导出的一个子集
- 概念层(概念级)(唯一):包含库中所有信息。
- Community view of the database.(数据库整体视图)
- Describes what data is stored in database and relationships among the data.(数据库的逻辑结构):数据和数据之间的关系
- 内部层(物理级)(唯一):
- Physical representation of the database on the computer.(物理实现)
- Describes how the data is stored in the database.(如何存)
- 内部表示或底层描述
- 数据库最低一级的逻辑描述
- 数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库
数据模型
数据结构
-
结构化:统一的格式存储数据 (存储形式:关系型数据库)
-
半结构化:可理解的逻辑流程和格式,格式变化很大(存储形式:非关系型数据库)
-
非结构化:每份文件独特的格式,结构不规则或不完整,数据模型不固定(存储形式:非关系型数据库)
数据模型的分类
不同的数据库结构,对应不同的数据库模型。
数据库按照数据模型可分为:
- Hierarchical Database(层次数据库)
- Networked Database(网状数据库)
- Relational Database(关系数据库):现代大多数商业系统采用此模型
- Object Database(对象数据库)
- Object-Relational(对象关系数据库)
- Multi Dimensional Database(多维数据库)
数据模型的特点
数据模型包含3个部分:
- a structural part(结构部分)
- a manipulative part(操作部分)
- possibly a set of integrity constraints(完整性规则)
数据模型(Model)与数据模式(Schema)的区别:
- Schema(模式):用某一具体的DBMS数据定义语言编写
- Model(模型):比模式更高层次,更抽象地描述数据库
数据库语言
数据库语言包含两个部分:
- Data Definition Language(DDL)数据库定义语言:
- Entities(实体)
- Attributes(属性)
- Relationships(联系)
- Integrity constraints(完整性约束)
- Security constraints(安全性约束)
- Data Manipulation Language(DML)数据库操作语言:提供基本的数据处理操作。有两种类型。
- Procedural DML(过程DML):allows user to tell system exactly how to
manipulate data.(需指定如何获得数据) - Non-Procedural DML(非过程DML):allows user to state what data is needed
rather than how it is to be retrieved.(说明需要什么数据)
- Procedural DML(过程DML):allows user to tell system exactly how to
关系模型
关系模式/关系框架(Relation schema):A named relation defined by a set of attribute
and domain name pairs.(被属性和域定义的关系)
-
定义:(A1:D1, A2:D2, … ,An:Dn)
-
An为属性名;Dn为属性的取值范围
-
实例:
属性(A) 域名 含义 域定义(D) branchNo BranchNumbers 所有可能的分公司编号 4个字符,范围B001~B999 street StreetNames 街道名称 25个字符 city CityNames 城市名称 15个字符 postcode Postcodes 邮编 8个字符 sex Sex 性别 1个字符,取值为M或F DOB DatesOfBirth 员工的生日 日期类型,范围从1-1-20起,格式为dd-mmm-yy salary Salaries 员工的工资 7位数字,范围6000.00~40000.00
Relational database schema(关系数据库模式):其实就是关系模式的集合
下面以Dreamhome(一个房产销售和租赁公司的数据库系统)案例来理解关系数据库模式:
表名(属性):
Branch分公司(branchNo, street, city, postcode)
Staff职员(staffNo, fName, IName, position sex, DOB, salary, branchNo)
PropertyForRent待租房产(propertyNo, street, city, postcode, type, rooms, rent, ownerNo, staffNo, branchNo)
Client客户(clientNo, fName, IName, telNo, prefType, maxRent, eMail)
PrivateOwner私人房产房主(ownerNo, fName, IName, address, telNo, eMail, password)
Viewing看房记录(clientNo, propertyNo, viewDate, comment)
Registration注册记录(clientNo, branchNo, staffNo, dateJoined)
Lease合同(leaseNo, propertyNo, clientNo, rent, paymentMethod, deposit, paid, rentStart, rentStart, rentFinish, duration)
关系模型(Relational Model):是一种特殊的数据模型。
包含三要素:
- Relational Data structure(数据结构)
- Relational Data manipulation(数据操纵)
- Constraints of data integrity(数据的完整性约束)
关系数据模型的相关概念:
- Attribute(属性):columns,field(列,字段):An attribute is a named column of a relation.(属性是关系中命名的列)
- Domain(域):A domain is the set of allowable values for one or more attributes.(属性的取值范围,域是一个或多个属性的取值集合)
- Tuple(元组):row,record(行,记录):A tuples is a row of relation.(关系中的每一行称为元组)
- Degree(维,目,度):属性的数目(列数):The degree of a relation is the number of attributes it contains.(关系的维数是指关系所包含属性的个数)
- Cardinality(基数):元组的数目(行数):The cardinality of a relation is the number of tuples it contains.(关系的基数是指它所包含元组的个数)
- Super Key(超关键字):One or more columns whose values are sufficient to identify a row.(一个属性或属性集合,它能唯一地标识出关系中的每个元组)
- Candidate Key(候选关键字):A super key but no proper subset is a super key.(本身是超关键字但其任何子集都不再是超关键字):可能有多个
- Primary Key(主关键字):Select one of the candidate keys to use primarily as primary key.(被选用于唯一标识关系中各元组的候选关键字,多个候选关键字中选最合适的一个)
- Foreign Key(外部关键字):An attribute or a set of attributes within a relation that matches the candidate key of some relation。(当一个关系中的某个属性或属性集合与另一个关系(也可是自己)的候选关键字匹配时,就称这个属性或属性集合为外部关键字)
下面以Dreamhome关系模式为例进行关键字说明:
关系完整性:
-
Nulls(空):Null represents a value for an attribute that is currently unknown or is not applicable for this tuple.(代表对一个元组当前取值还不知道或是不可用的属性值。)
-
Entity Integrity(实体完整性):
(Candidate)keys must be unique.(关键字值唯一)
In a relation,no attribute of a primary key can be null.(基本表主关键字的诸属性均不能为空)
-
Referential Integrity (参照完整性):If a foreign key exists in a relation,either the foreign value must match a candidate key value of some tuple in its home relation or the foreign key value must be wholly null.(外部关键字取参照候选关键字值或取空值)
-
Enterprise constraints(企业约束):Additional rules specified by the users or database administrators of a database.(用户和管理员定义的附加规则)