数据库系统

一.数据管理技术的产生和发展
 

数据库是长期存储在计算机内有组织,大量,共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高数据独立性。

数据库管理系统在数据库建立,运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,在多用户使用时对数据库进行并发控制,在发生故障后对数据库进行恢复。

1.人工管理阶段:

  • 数据不保存
  • 应用程序管理数据(数据需要由应用程序自己设计,定义和管理,没有相应的软件系统负责数据的管理工作
  • 数据不共享
  • 数据不具有独立性

2.文件系统阶段:

  • 数据长期保存
  • 文件系统管理数据
  • 数据共享性差,冗余度大
  • 数据独立性差

3.数据库系统阶段

  • 数据结构化(与文件系统的本质区别)(面向整个组织企业,数据之间是有联系的)
  • 数据共享性高,冗余度低且易扩充(减少1冗余,节约存储空间,数据共享能避免数据之间的不相容和不一致)
  • 数据独立性高
    物理独立性:应用程序与数据库中的数据的物理存储是相互独立的
    逻辑独立:应用程序与数据库逻辑结构相互独立
  • 数据由数据库管理系统统一管理和控制
    数据安全性保护
    数据完整性检查(完整性指数据正确性,有效性,相容性)
    并发控制(多个用户并发进程同时存取,修改数据库,会发生相互干扰破坏数据库完整性)
    数据库恢复(硬,软件故障,操作员失误)

二.数据模型

数据模型:对现实世界数据特征的抽象

1.概念模型/信息模型

  • 含义:按照用户观点对数据和信息进行建模
  • 信息世界中的基本观念:实体,属性,码,实体型,实体集,联系
  • 概念模型一种表示方法:实体-联系方法:E-R模型

2.逻辑模型和物理模型:

  • 逻辑模型:层次模型,网状模型,关系模型,面向对象数据模型。按照计算机系统的观点对数据建模
     
  • 物理模型:对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,或是磁盘磁带上的存储方式和存取方法

3.层次模型

  • 含义:满足仅有一个节点没有双亲结点(根节点)。根以外其他节点仅有一个双亲结点。任何一个给定的记录值只能按层次路径查看,没有一个子女记录值能脱离双亲记录值独立存在
  • 层次模型数据操纵与完整性约束:
    数据操纵:查询,插入删除,更新
    插入:如果没有相应双亲结点值就不能插入它的子女节点值
    删除:如果删除双亲,相应节点子女也被同时删除
  • 层次模型优缺点
    优点:数据结构简单清晰,层次数据库查询效率高,良好的完整性支持
    缺点:现实世界中很多联系是非层次的,不适合用层次模型。一个节点具有多个双亲结点,用该模型很笨拙。查询子女节点必须通过双亲节点。由于结构严密,层次命令趋于程序化。

4.网状模型

  • 含义:多个节点无双亲。一个节点多个双亲。
  • 网状模型数据操纵与完整性约束
    支持记录码概念
    保证一个联系中双亲记录和子女记录之间是一对多关系
    支持双亲记录和子女记录之间的某些约束条件
  • 网状模型优缺点
    优点:
    更为直接描述现实世界
    更好性能,存取效率高
    缺点:
    结构复杂
    DDL,DML复杂
    应用程序访问数据必须选择适当存取路径,因此必须了解系统结构,加重了编写应用程序负担

5.关系模型

  • 含义:二维表
  • 术语:
    关系:一个关系对应通常说的一张表
    元组:一行是一个元组
    属性:一列是一个属性
    码:某个属性,可以唯一确定一个元组
    域:相同数据类型的值集合
    分量:元组中一个属性值
    关系模式:  关系名(属性1,属性2,属性3......属性n)
  • 关系模型数据操纵与完整性约束
    数据操纵:查询,插入,删除,更新数据
    完整性约束:实体完整性,参照完整性,用户定义的完整性
  • 优缺点
    优点:
    数学概念基础
    概念单一
    存取路径对用户透明,更高数据独立性,安全保密性
    缺点:
    查询效率不如格式化数据模型

三.数据库系统的结构

1.数据库系统的概念:“型” 和“值”

2.数据库的三级模式结构

  • 模式:也叫逻辑模式,所有用户公共数据视图
  • 外模式:子模式/用户模式,数据库用户能看见和使用局部数据的逻辑结构和特征的描述(模式的自己,一个数据库有多个外模式,一个应用程序只能使用一个外模式)
  • 内模式:存储模式,数据物理结构和存储方式的描述(一个数据库只有一个内模式)



  •  

四.关系的完整性
 

1.实体完整性规则:若属性A是基本关系R的主属性,则A不能取空值。空值就是“不知道,不存在,无意义”的值。

eg1:学生(学号,姓名,性别,专业号,年龄)关系中学号为主码,则学号不能取空值

eg2:选修(学号,课程号,成绩)关系中学号和课程号为主码,则学号和课程号不能取空值

2.参照完整性规则:一个关系中的属性是另一个关系中的主码
​​​​

eg1:学生(学号,姓名,性别,专业号,年龄)

专业(专业号,专业名)
学生关系中引用了专业关系的主码,也就是说学生关系中的专业号,必须是确实存在的专业的专业号

eg2:学生(学号,姓名,性别,专业号,年龄)
        专业(专业号,专业名)
     选修课程(学号,专业号,成绩)

3.用户定义的完整性:

针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据你须满足的语义要求 

补:列级完整性约束和表级完整性约束

列级完整性约束(Column-Level Constraints)

列级完整性约束是针对单个列的约束条件,用于控制和验证该列中的数据。常见的列级约束包括:

  • PRIMARY KEY:确保列的每个值都是唯一的,并且不为 NULL。通常一个表有一个主键。
  • UNIQUE:确保列中的所有值都是唯一的,但允许 NULL 值(在某些数据库中 NULL 可以被认为是唯一的)。
  • NOT NULL:确保列中的每个值都不能为 NULL。
  • CHECK:对列中的数据施加条件限制。例如,CHECK (Sage >= 0 AND Sage <= 120) 确保年龄在合理范围内。
  • DEFAULT:指定当插入数据时,如果该列没有提供值,则使用的默认值。

    CREATE TABLE Student (
           Sno CHAR(9) PRIMARY KEY, -- 列级主键约束
          Sname CHAR(20) UNIQUE, -- 列级唯一约束
          Ssex CHAR(2),
          Sage SMALLINT,
         Sdept CHAR(20) );

表级完整性约束(Table-Level Constraints)

表级完整性约束是针对整个表的约束条件,可以涉及一个或多个列。常见的表级约束包括:

  • PRIMARY KEY:可以定义在一个或多个列上,确保这些列组合中的每个值都是唯一的,并且不为 NULL。通常用来唯一标识表中的每一行。
  • FOREIGN KEY:定义表与其他表之间的关系,确保列的值必须在引用的表中的主键列中存在,以维持数据的参照完整性。
  • UNIQUE:可以定义在一个或多个列的组合上,确保该列组合中的每个值都是唯一的。
  • CHECK:可以定义在表级别,施加对表中多列的条件限制。例如,CHECK (Sage >= 0 AND Sage <= 120) 可以确保表中的年龄值在合理范围内。
    CREATE TABLE Enrollment (
        Sno CHAR(9),
        Cno CHAR(6),
        Grade CHAR(2),
        PRIMARY KEY (Sno, Cno),   -- 表级主键约束
        FOREIGN KEY (Sno) REFERENCES Student(Sno),  -- 表级外键约束
        CHECK (Grade IN ('A', 'B', 'C', 'D', 'F'))  -- 表级检查约束
    );
     

五.关系数据库标准语言SQL

SQL集数据查询,数据操纵,数据定义和数据控制功能为一体

1.SQL特点:综合统一,高度非过程化,面向集合的操作方式,以同一种语法结构提供多种使用方式,语言简洁,易学易用

2.SQL基本概念:一个关系对应一个基本表,一个或多个基本表对应一个存储文件,一个表可以带若干索引。

(外模式包括若干视图和部分基本表,模式包括若干基本表,内模式包括若干存储文件)

3.数据定义:关系数据库系统支持三级模式结构,其模式,外模式和内模式中的基本对象有模式,表,视图和索引。(SQL标准不提供修改模式定义和修改视图定义的操作)
 

操作对象         操作方式
创建删除修改
模式CREATE SCHEMADROP SCHEMA
CREATE TABLEDROP TABLEALTER TABLE
视图CREATE VIEWDROP VIEW
索引CREATE INDEXDROP INDEXALTER  INDEX

一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表,视图和索引等数据库对象。

4.模式的定义与删除

  • 定义模式:CREATE SCHEMA <模式名>  AUTHORIZATION <用户名>
    eg:为用户WANG定义一个学生-课程模式S-T
    CREATE SCHEMA "S-T"  AUTHORIZATION WANG
  • 若是没有指定模式名,则模式名隐含为用户名
    CREATE SCHEMA AUTHORIZATION WANG

     

定义模式实际上定义了一个命名空间,在该空间可进一步定义该模式包含的数据库对象,例如基本表,视图,索引

CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义子句>|<视图定义子句>|<授权定义子句>] 

删除模式:DROP SCHEMA <模式名>  <CASCADE|RESTRICT> 

选择CASCADE(级联),在删除模式的同时把该模式中所有的数据库对象全部删除

选择RESTRICT(限制),如果该模式中已经定义了下属的数据库对象(如表,视图等),拒绝该删除语句的执行,只有该模式下没有任何下属对象时才执行CREATE SCHEMA语句

DROP SCHEMA ZHANG CASCADE
该语句删除了模式ZHANG,同时模式中定义的表TAB1也被删除了 

5.基本表的定义,删除与修改

定义基本表:创建了一个模式就建立了一个数据库的命名空间,一个框架。在该空间中首先要定义的就是该模式包含的数据库基本表 

  • CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件]
                                             [ ,<列名><数据类型>[列级完整性约束条件]]
                                                 ......
                                              [表级完整性约束条件])



    eg1:建立一个“学生”表Student
  • CRESTE TABLE Student
      (Sno CHAR(9)  PRIMARY KEY,    /*列级完整性约束条件,Sno是主码,9个字符的字符串*/
        Sname CHAR (20)  UNIQUE,     /*Sname 取唯一值,20个字符的字符串*/
         Ssex  CHAR(2),                        /*存储性别*/
         Sage SMALLINT,         /*存储年龄,数据类型是 SMALLINT,适合存储小范围的整数*/
         Sdept CHAR(20),    /*列用于存储部门名称,最多 20 个字符*/
    );

    eg2:建立一个“课程”表Course
    CREATE TABLE Course
    (Cno CHAR(4) PRIMARY KEY, /*列级完整性约束条件 ,Cno是主码*/
    Cname CHRA(40) NOT NULL,
    Cpno CHAR(4),   /*先修课*/
    Ccredit SMALLINT,
    FOREIGN KEY(Cpno) REFERENCES Course(Cno)  /*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/

    );

    eg3:建立学生选课表SC
    CREATE TABLE SC
    (Sno CHAR(9),
    Cno  CHAR(4),
    Grade SMALLINT,
    PRIMARY KEY(Sno ,Cno),/*主码由两个属性构成,必须作为表级完整性条件进行定义*/
    FOREIGN KEY(Sno) REFERENCES Student(Sno),
    /*表级完整性约束条件,Sno是外码,被参照表是Student*/
    FORENING KEY (Cno) REFERENCES Course(Cno)
    /*表级完整性约束条件,Cno是外码,被参照表是Course*/
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值