精华内容
下载资源
问答
  • 数据库中的逻辑删除

    千次阅读 2020-08-15 10:20:16
    逻辑删除:从数据库中删除数据后,数据还存在于数据库中 物理删除是直接用delete语句做删除,被删除的数据之后无法被查询,要想恢复误删数据困难(数据库还原不一定能解决) 逻辑删除是在表中添加一个删除标记,...

    什么是逻辑删除

    • 物理删除:从数据库中删除数据后,数据不存在于数据库中
    • 逻辑删除:从数据库中删除数据后,数据还存在于数据库中

    物理删除是直接用delete语句做删除,被删除的数据之后无法被查询,要想恢复误删数据困难(数据库还原不一定能解决)

    逻辑删除是在表中添加一个删除标记,例如del_flag(0代表数据未被删除,1代表数据已被删除),做删除时并不是用delete删除,而是用update将del_flag置成1,这样我们在查询时设置限定条件del_flag=0,这样就会筛除被我们逻辑删除的数据,可以方便我们处理误删操作。在一定时间后我们可以将逻辑删除统一进行物理删除。

    例子:

    在有回收站模式的系统中(邮箱,windows等)
    将文件添加至回收站就是逻辑删除
    清空回收站的操作就是将逻辑删除转为物理删除

    数据库逻辑删除查询时的问题

    问题描述:在有逻辑删除的表中查询数据时加上del_flag=0的限定,得到正确数据,当遇到多表查询时使用 s.del_flag=0 and c.del_flag=0出现数据不全的问题(s为下文中的student表,c为下文中的class表)

    例子:

    • class表结构:
      class表结构

    • student表结构:

    student表结构

    • 查询所有班级和其中所有学生的姓名

      预期结果:
      在这里插入图片描述

      错误写法:

      SELECT
      	c.class_name,
      	s.`name`
      FROM
      	class c
      	LEFT JOIN student s ON c.id = s.class_id 
      WHERE
      	c.del_flag = 0 
      	AND s.del_flag = 0
      

      错误结果:
      在这里插入图片描述

    • 错误分析:
      错误分析

      由图可以清晰的看出当班级中没有学生的时候,学生的del_flag为null,所以在筛选的过程中将没有学生的班级排除了,造成了错误的发生。

    • 正确写法:

      SELECT
      	c.class_name,
      	s.`name`
      FROM
      	class c
      	LEFT JOIN student s ON c.id = s.class_id 
      WHERE
      	c.del_flag = 0 
      	AND (s.del_flag = 0 OR s.del_flag IS NULL)
      
    展开全文
  • 数据库设计之逻辑设计

    万次阅读 2017-11-05 11:05:19
    1:将需求转化成数据库逻辑模型 2:通过ER图的型式对逻辑模型进行展示 3:同所选用的具体的DBMS系统无关名词解释 关系:一个关系对应通常所说的一张表 元组:表中的一行即为一个元组 属性:表中的一列即为...

    逻辑设计
    1:将需求转化成数据库的逻辑模型
    2:通过ER图的型式对逻辑模型进行展示
    3:同所选用的具体的DBMS系统无关

    名词解释

    关系:一个关系对应通常所说的一张表
    元组:表中的一行即为一个元组
    属性:表中的一列即为一个属性,每一个属性都有一个名称,称为属性名
    候选码:表中的某个属性组,它可以唯一确定一个元组
    主码:一个关系有多个候选码,选定其中一个为主码
    域:属性的取值范围
    分量:元组中的一个属性值

    ER图例说明

    矩形:表示实体集,矩形内写实体集的名字
    菱形:表示联系集
    椭圆:表示实体的属性
    线段:将属性连接到实体集,或将实体集连接到联系集

    数据操作异常及数据冗余

    插入异常:如果某实体随着另一个实体的存在而存在,即缺少某个实体时无法表示这个实体,那么这个表就存在插入异常。
    更新异常:如果更改表所对应的某个实体实例的单独属性时,需要将多行更新,那么就说这个表存在更新异常。
    删除异常:如果删除表的某一行来反映某实体实例,失效时导致另一个不同实体实例信息丢失,那么这个表中就存在删除异常。

    注意:若一个表中存在插入异常,那它肯定存在删除异常和更新异常。

    数据冗余:是指相同的数据在多个地方存在,或者说表中的某个列可以由其他列计算得到,这样就说表中存在数据冗余。

    第一范式
    定义:数据库表中的所有字段都是单一属性,不可再分的。这个单一属性是由基本的数据类型所构成的,如整数,浮点数,字符串等,换句话说,第一范式要求数据库中的表都是二维表。(二维表就是由行和列组成的表)
    这里写图片描述

    第二范式
    定义:数据库的表中不存在非关键字段对任一候选关键字段的部分函数依赖。
    部分函数依赖是指存在着组合关键字中的某一关键字决定非关键字的情况。
    换句话说:所有单关键字的表都符合第二范式。
    这里写图片描述

    修改后的
    这里写图片描述
    存在的问题:插入异常,删除异常,更新异常,数据冗余

    通俗解释
    完全依赖:表中只有一个关键字(即主键),其他属性的增删改查的时候定位到这一行都是依赖此关键字的。
    第二范式:只能有一个主键,不能有复合主键,可以就满足了第二范式。

    由于供应商和商品之间是多对多的关系,所以只有使用商品名称和供应商名称才可以唯一标识出一件商品,也就是商品名称和供应商名称是一组组合关键字。
    上表中存在以下的部分函数依赖关系
    (商品名称)—>(价格,描述,重量,商品有效期)
    (供应商名称)—>(供应商电话)

    第三范式
    定义:第三范式是在第二范式的基础上定义的,如果数据表中不存在非关键字段,对任意候选关键字段的传递函数依赖则符合第三范式。
    这里写图片描述

    存在问题:
    (分类,分类描述)对于每一个商品都会进行记录,所以存在数据冗余,同时也会存在数据deep插入、更新及删除异常。
    这里写图片描述
    数据库设计三范式:
    1NF:列不可分就满足1NF了。

    2NF:不存在部分依赖,比如 (A,B)C。(消除非主属性对主属性的传递依赖,即完全依赖于主键)

    3NF:不存在传递依赖,比如ABC。(在2NF基础上消除了传递依赖)

    BC范式
    定义:在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合BC范式。也就是说如果是复合关键字,则复合关键字之间也不能存在函数依赖关系
    这里写图片描述

    存在下列关系因此不符合BCNF要求:
    (供应商)—>(供应商联系人)
    (供应商联系人)—>(供应商)
    并且存在数据操作异常及数据冗余
    这里写图片描述

    总结
    第一,二,三范式解决的是非主属性的关系。BC 范式解决的是主属性的关系;

    第一范式:就是原子性,字段不可再分割,(列属性不能在细分为子列)
    第二范式:就是完全依赖,没有部分依赖;【非主属性不能依赖于主键的一部分,要完全依赖于主键(主键是复合键)】
    第三范式:没有传递函数依赖。【非主属性之间的依赖】
    BC范式: 解决部分主键依赖于非主键部分(复合关键字之间也不能存在函数依赖关系)。

    参考视频:http://www.imooc.com/learn/117

    展开全文
  • ORACLE数据库学习之逻辑结构

    千次阅读 2013-12-15 17:02:17
    数据库逻辑结构包含表空间、段、范围(extent)、数据块和模式对象。 (一)表空间 一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间类似于sybase下的设备。(TABLESPACE)。一个表空间可将相关的逻辑结构...
    

     逻辑结构

     

    数据库逻辑结构包含表空间、段、范围(extent)、数据块和模式对象。

    (一)表空间

    一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间类似于sybase下的设备。(TABLESPACE)。一个表空间可将相关的逻辑结构组合在一起。DBA可利用表空间作下列工作:

    • 控制数据库数据的磁盘分配,克服操作系统文件的限制。2G

    • 将确定的空间份额分配给数据库用户。

    • 通过使单个表空间在线或离线,控制数据的可用性。

    • 执行部分数据库后备或恢复操作。

    • 为提高性能,跨越设备分配数据存储。

      数据库、表空间和数据文件之间的关系如下图所示:

       
         

       

       

       

       

       

       

       

       

       

       

       

       


     logic                                                                                                                                               physical

     

     

     

     

     

    Oracleblock

     

     

    Os block

     

     

                                                           

     

     

    每个数据库可逻辑划分为一个或多个表空间

    。每一个表空间是由一个或多个数据文件组成,该表空间物理地存储表空间中全部逻辑结构的数据。DBA可以建立新的表空间,可为表空间增加数据文件或可删除数据文件,设置或更改缺省的段存储位置。

     

     

    每一个ORACLE数据库包含有一个名为SYSTEM的表空间,在数据库建立是自动建立。在该表空间中总包含有整个数据库的数据字典表。最小的数据库可只需要SYSTEM表空间。该表空间必须总是在线。表和存储的PL/SQL程序单元(过程、函数、包和触发器)的全部存储数据是存储在SYSTEM表空间中。如果这些PL/SQL对象是为数据库建的,DBASYSTEM表空间中需要规划这些对象所需要的空间。

    表空间利用增加数据文件或扩展数据文件扩大表空间,表空间的大小为组成该表空间的数据文件大小的和。相关命令。

    • 创建表空间:CREATE TABLESPACE app_data

      DATAFILE ?DISK4/app01.dbf?SIZE 100M,

              ?DISK5/app02.dbf?SIZE 100M

      MINIMUM EXTENT 500K

      DEFAULT STORAGE(INITIAL 500K NEXT 500K MAXEXTENTS500 PCTINCREASE 0);

    • 临时表空间 用于排序操作,不能包含永久数据

      CREATE TABLESPACE sort

      DATAFILE ?DISK2/sort01.dbf?SIZE 50M

      MINIMUM EXTENT 1M

      DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS500 PCTINCREASE 0)

      TEMPORARY;

    • 回滚表空间

      用于 保存回滚段不要包含其他永久性数据

      CREATE TABLESPACE rbs

      DATAFILE ?DISK2/sort01.dbf?SIZE 50M

      MINIMUM EXTENT 1M

      DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS500 PCTINCREASE 0) ;

    • 向表空间中增加数据文件

      ALTER TABLESPACE APP_data

      ADD DATAFILE

      ?DISK5/app03.dbf?SIZE 200M;

    • 允许数据文件自动扩展

      ALTER TABLESPACE app_data

      ADD DATAFILE

      ?DISK6/app04.dbf?SIZE 200M

      AUTOEXTEND ON NEXT 10M

      MAXSIZE 500M;

    • 手工改变数据文件的大小

      ALTER DATABASE DATAFILE ?DISK5/app02.dbf?RESIZE200M;

    • 改变存储参数

      ALTER TABLESPACE app_data

      MINIMUM EXTENT 2M;

       

      ALTER TABLESPACE app_data

      DEFAULT STORAGE

      (INITIAL 2M NEXT 2M

      MAXEXTENTS 999);

    • 存储参数

      下述参数影响段的空间分配:

       INITIAL用字节指定表空间的第一个区间大小

       NEXT下一个区间大小

       MAXEXTENTS 可增长的最多区间数

       MINEXTENTS 首次创建时分配的区间数

       PCTINCREASE每次分配新的区间增加的百分比

      DBA可以使ORACLE数据库中任何表空间(SYSTEM表空间外)在线(ONLINE)或离线(OFFLINE)。表空间通常是在线,以致它所包含的数据对数据库用户是可用的。当表空间为离线时,其数据不可使用。在下列情况下,DBA可以使其离线。

      。使部分数据不可用,而剩余的部分允许正常存取

      。执行离线的表空间后备

      。为了修改或维护一应用,使它和它的一组表临时不可用。

      包含有正在活动的回滚段的表空间不能被离线,仅当回滚段不正在使用时,该表空间才可离线。

    在数据字典中记录表空间的状态,在线还是离线。如果在数据库关闭时一表空间为离线,那么在下次数据库装配和重新打开后,它仍然保持离线。

    当出现某些错误时,一个表空间可自动地由在线改变为离线。通过使用多个表空间,将不同类型的数据分开,更方便DBA来管理数据库。

    相关命令:

    • 将表空间OFFLINE

      ALTERTABLESPACE app_data OFFLINE;

       

    • 移动数据文件

      条件:表空间 APP_DATA必须OFFLINE

      目标文件必须存在,数据库处在MOUNT状态

      ALTERTABLESPACE app_data RENAME DATAFILE ?DISK4/app01.dbf?TO ?DISK5/app01.dbf?

       

    • 只读表空间

       表空间必须在ONLINE状态

       表空间中不含活动的 事物.

       表空间中不含活动的 回滚段

       表空间中不在作在线备份

      ALTERTABLESPACE app_data READ ONLY;

       

    • 删除表空间

      DROPTABLESPACE app_data

      INCLUDINGCONTENTS;不删除物理文件

       

    • 获取数据文件有关的信息

    DBA_DATA_FILES 

    FILE_NAME

    TABLESPACE_NAME

    BYTES

    AUTOEXTENSIBLE

    MAXBYTES

    INCREMENT_BY

     

    • 获取表空间有关的信息

    DBA_TABLESPACES

    TABLESPACE_NAME

    NEXT_EXTENT

    MAX_EXTENTS

    PCT_INCREASE

    MIN_EXTLEN

    STATUS

    CONTENTS

    小结ORACLE数据库中一表空间是由一个或多个物理数据文件组成,一个数据文件只可与一个表空间想联系。当为一表空间建立一数据文件时,ORACLE建立该文件,分配指定的磁盘空间容量。在数据文件初时建立后,所分配的磁盘不包含任何数据。表空间可以在线或离线。在ORACLE中还允许单独数据文件在线或离线。一般原则:使用多个表空间;为表空间指定存储参数;给用户指定表空间限额

    (二)段、范围和数据块

    ORACLE通过段、范围和数据块逻辑数据结构可更细地控制磁盘空间的使用。

    段(SEGMENT)包含表空间中一种指定类型的逻辑存储结构,是由一组范围组成。根据访问频率、内容对象和生命周期在ORACLE数据库中有几种类型的段:数据段、索引段、回滚段和临时段。

     

    数据段:对于每一个非聚集的表有一数据段,表的所有数据存放在该段。每一聚集有一个数据段,聚集中每一个表的数据存储在该段中。

     

    索引段:每一个索引有一索引段,存储索引数据。

     

    回滚段:保存数据修改前的映象,这些信息用于生成读一致性数据库信息、在数据库恢复时使用、回滚未提交的事务。Rollback时用得着。一个事务只能使用一个回滚段。

    建立回滚段

    CREATE ROLLBACK SEGMENT rbs01

    TABLESPACE rbs

    STORAGE (

    INITIAL 100K NEXT 100K OPTIMAL 4M MINEXTENTS 20 MAXEXTENTS 100);

    使回滚段ONLINE

    ALTER ROLLBACK SEGMENT rbs01 ONLINE;

    在初始化参数中指定,以保证数据库启动 时ONLINE

    ROLLBACK_SEGMENTS=(rbs01)

    修改回滚段的存储参数

    ALTER ROLLBACK SEGMENT rbs01

    STORAGE( MAXEXTENTS 200 );

    从回滚段中释放空间

    ALTER ROLLBACK SEGMENT rbs01

    SHRINK TO 4M;

    使回滚段Offline

    ALTER ROLLBACK SEGMENT rbs01 OFFLINE;

    删除回滚段

    回滚段在删除之前必须OFFLINE

    ALTER ROLLBACK SEGMENT rbs01 OFFLINE;

    DROP ROLLBACK SEGMENT rbs01;

    临时段:当一个SQL语句需要临时工作区时,由ORACLE建立。当语句执行完毕,临时段的范围退回给系统。

    ORACLE对所有段的空间分配,以范围(extents)为单位。

     

    范围

    一个范围(EXTENT)是数据库存储空间分配的一个逻辑单位,它由连续数据块所组成。每一个段是由一个或多个范围组成。当一段中间所有空间已完全使用时,ORACLE为该段分配一个新的范围。

    为了维护的目的,在数据库的每一段含有段标题块(segment header block)说明段的特征以及该段中的范围目录。

     

    数据块

    数据块(data block)是ORACLE管理数据文件中存储空间的单位,为数据库使用的I/O的最小单位,其大小可不同于操作系统的标准I/O块大小。

     

     

    数据块的格式:

    公用的变长标题

    表目录

    行目录

    未用空间

    行数据

     

    1. 模式和模式对象

      一个模式(schema)为模式对象(scehma object)的一个集合,每一个数据库用户对应一个模式。模式对象为直接引用数据库数据的逻辑结构,模式对象包含如表、视图、索引、聚集、序列、同义词、数据库链、过程和包等结构。模式对象是逻辑数据存储结构,每一种模式对象在磁盘上没有一个相应文件存储其信息。一个模式对象逻辑地存储在数据库的一个表空间中,每一个对象的数据物理地包含在表空间的一个或多个数据文件中。

       

      表(table)为数据库中数据存储的基本单位,其数据按行、列存储。每个表具有一表名和列的集合。每一列有一个列名、数据类型、宽度或精度、比例。一行是对应单个记录的列信息的集合。

       

      视图

      一个视图(view)是由一个或多个表(或其他视图)中的数据的一种定制的表示,是用一个查询定义,所以可认为是一个存储的查询(stored query)或是一个虚表(virtual table)。视图可在使用表的许多地方使用。

      由于视图是由表导出的,视图和表存在许多类似,视图象表最多可定义254列。视图可以被查询,而在修改、插入或删除时具有一定的限制,在视图上执行的全部操作真正地影响视图的基本表中的数据,受到基本表的完整性约束和触发器的限制。

      视图与表不同,一个视图不分配任何存储空间,视图不真正地包含数据。由查询定义的视图相应于视图引用表中的数据。视图只在数据字典中存储其定义。

      引入视图有下列好处:

      。通过限制对表的行预定义集合的存取,为表提供附加的安全性

      。隐藏数据复杂性。

      。为用户简化命令

      。为基本表的数据提供另一种观点。

      。可将应用隔离基本表定义的修改

      。用于不用视图无法表示的查询。

      。可用于保存复杂查询。

       

      聚集

      聚集(cluster)是存储表数据的可选择的方法。一个聚集是一组表,将具有同一公共列值的行存储在一起,并且它们经常一起使用。这些公共列构成聚集码。例如:EMP表各DEPT表共享DEPTNO列,所以EMP表和DEPT表可聚集在一起,聚集码的列为DEPTNO列,该聚集将每个部门的全部职工行各该部门的行物理地存储在同一数据块中。

       

      索引

      索引(index)是与表和聚集相关的一种选择结构。索引是为提高数据检索的性能而建立,利用它可快速地确定指定的信息。ORACLE索引为表数据提供快速存取路径。索引适用于一范围的行查询或指定行的查询。

      索引可建立在一表的一列或多列上,一旦建立,由ORACLE自动维护和使用,对用户是完全透明的。索引是逻辑地和物理地独立于数据,它们的建立或删除对表没有影响,应用可继续处理。索引数据的检索性能几乎保持常数,而当一表上存在许多索引时,修改、删除和插入操作的性能会下降。

      索引有唯一索引各非唯一索引。唯一索引保证表中没有两行在定义索引的列上具有重复值。ORACLE在唯一码上自动地定义唯一索引实施UNIQUE完整性约束。

      组合索引是在表的某个列上所建立的一索引。组全索引可加快SELECT语句的检索速度,在其WHERE子句中可引用组合索引的全部或主要部分。所以在定义中给出列的次序,将经常存取的或选择最多的列放在首位。

      在建立索引时,将在表空间自动地建立一索引段,索引段空间分配和保留空间的使用受下列方式控制:

      索引段范围的分配常驻该索引段的存储参数控制。

      其数据块中未用空间可受该段的PCTFREE参数设置所控制。

       

      序列生成器

      序列生成器(sequence generator)产生序列号。在多用户环境下该序列生成器特别有用,可生成各返回序列号而不需要磁盘I/O或事务封锁。

      序列号为ORACLE整数,最多可有38个数字。一个序列定义指出一般信息:序列的名字、上升或下降、序列号之间间距和其它信息。对所有序列的确的定义以行存储在SYSTEM表空间中的数据字典表中,所以所有序列定义总是可用。由引用序列号的SQL语句使用序列号,可生成一个新的序列号或使用当前序列号。一旦在用户会话中的SQL语句生成一序列号,该序列号仅为该会话可用。序列号生成是独立于表,所以同一序列生成器可用于一个和多个表。所生成序列号可用于生成唯一的主码。

       

      同义词

      一个同义词(synonym)为任何表、视图、快照、序列、过程、函数或包的别名,其定义存储在数据字典中。同义词因安全性和方便原因而经常使用,可用于:

    • 可屏蔽对象的名字及其持有者。

    • 为分布式数据库的远程对象提供位置透明性。

    • 为用户简化SQL语句。

      有两种同义词:公用和专用。一个公用同义词为命名为PUBLIC特殊用户组所持有,可为数据库中每一个用户所存取。一个专用同义词是包含在指定用户的模式中,仅为该用户和授权的用户所使用。

       

      杂凑

      杂凑(hashing)是存储表数据一种可选择的方法,用以改进数据检索的性能。要使用杂凑,就要建立杂凑聚集,将表装入到该聚集。在骠凑聚集中的表行根据杂凑函数的结果进行物理学存储和检索。杂凑函数用于生成一个数值的分布,该数值称为杂凑值,它是基于指定的聚集码值。

       

      程序单元

      程序单元(program unit)是指存储过程、函数和包(PACKAGE)。一个过程和函数,是由SQL语句和PL/SQL语句组合在一起,为执行某一个任务的一个可执行单位。一个过程或函数可被建立,在数据库中存储其编译形式,可由用户或数据库应用所执行。过程和函数差别在函数总返回单个值给调用者,而过程没有值返回给调用者。

      包提供相关的过程、函数、变量和其它包结构封装起来并存贮在一起的一种方法,允许管理者和应用开发者利用该方法组织如此的程序(routine,来提供更多的功能和提高性能。

       

      数据库链

      数据库链是一个命名的对象,说明从一数据库到另一数据库的一路径(PATH)。在分布式数据库中,对全局对象名引用时,数据库链隐式地使用。

       

    一.   数据库和实例的启动和关闭

    一个ORACLE数据库没有必要对所有用户总是可用,数据库管理员可启动数据库,以致它被打开。在数据库打开情况下,用户可存取数据库中的信息。当数据库不使用时,DBA可关闭它,关闭后的数据库,用户不能存取其信息。

    数据库的启动和关闭是非常重要的管理功能,通过以INTERNAL连接到ORACLE的能力来保护。以INTERNAL连接到ORACLE需要有下列先决条件:

    该用户的操作系统账号具有使用INTERNAL连接的操作系统特权。

    INTERNAL数据库有一口令,该用户知道其口令。

    另外:当用户以INTERNAL连接时,可连接到专用服务器,而且是安全连接。

     

    1. 数据库启动

          启动数据库并使它可用有三步操作:

    • 启动一个实例;

    • 装配数据库

    • 打开数据库

       

    1. 启动一个实例 start up nomount

      启动一实例的处理包含分配一个SGA(数据库信息使用的内存共享区)和后台进程的建立。实例起动的执行先于该实例装配一数据库。如果仅启动实例,则没有数据库与内存储结构和进程相联系。

       

    2. 装配一数据库 alter database mount

      装配数据库是将一数据库与已启动的实例相联。当实例安装一数据库之后,该数据库保持关闭,仅DBA可存取。

       

    3. 打开一数据库 alter database open

      打开一数据库是使数据库可以进行正常数据库操作的处理。当一数据库打开所有用户可连接到该数据库用存取其信息。在数据库打开时,在线数据文件和在线日志文件也被打开。如果一表空间在上一次数据库关闭时为离线,在数据库再次打开时,该表空间与它所相联的数据文件还是离线的。

       

    1. 数据库和实例的关闭

       

      关闭一实例以及它所连接的数据库也有三步操作:

       

    1. 关闭数据库 

      数据库停止的第一步是关闭数据库。当数据库关闭后,所有在SGA中的数据库数据和恢复数据相应地写入到数据文件和日志文件。在这操作之后,所有联机数据文件和联机的日志文件也被关闭,任何离线表空间中数据文件夹是已关闭的。在数据库关闭后但还安装时,控制文件仍保持打开。

       

    2. 卸下数据库

      停止数据库的第二步是从实例卸下数据库。在数据库卸下后,在计算机内存中仅保留实例。在数据库卸下后,数据库的控制文件也被关闭。

       

    3. 停止实例

      停止数据库的最后一步是停止实例。当实例停止后,SAG是从内存中撤消,后台进程被中止。

      Shutdown normal

      等待所有的用户退出

      Shutdown immdiatly

      回滚未提交事务

      Shutdown abort

      强制退出,数据库置于不可知状态

    展开全文
  • 数据库分析之逻辑结构设计

    万次阅读 2018-07-02 15:08:09
    在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,然后才能更改、更准确地用某一数据库管理系统实现这些需求。 概念模型的主要特点: 1. 能真实、充分地反映现实世界,包括事物和事物之间的联系,能...

    概念结构是独立于任何一种数据模型的信息结构,逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库系统产品所支持的数据模型相符合的逻辑结构。

    一、E-R图向关系模型的转换

    E-R图向关系模型的转换要解决的是如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。
    1. 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性每个实体的码均是该关系的候选码。如果某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。
    2. 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
    3. 一个m:n联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
    4. 三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
    5. 具有相同码的关系模式可合并。

    二、数据模型的优化

    数据库逻辑设计的结果不是唯一的。关系数据模型的优化通常以规范化理论为指导,方法有:
    1. 确定数据依赖。
    2. 对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
    3. 按照数据依赖的理论对关系模式逐一进行分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。
    4. 根据需求分析阶段得到的处理要求分析对于这样的应用环境这些模式是否合适,确定是否对某些模式进行合并或分解。
    5. 对关系模式进行必要分解,提高数据操作效率和存储空间利用率。常用分解方法有:
    1)水平分解
    把(基本)关系的元组分为若干个子集合,定义每个子集合为一个子关系,以提高系统的效率。根据“80/20原则”,一个大关系中,经常被使用的数据只是关系的一部分,约20%,可以把经常使用的数据分解出来,形成一个子关系。如果关系R上具有n个事务,而且多事务存取的数据不相交,则R可分解为少于或等于n个子关系,使每个事务存取的数据对应一个关系。
    2)垂直分解
    把关系模式R的属性分解为若干个子集合,形成若干个子关系模式。垂直分解的原则是,将经常在一起使用的属性从R中分解出来形成一个子关系模式。垂直分解可以提高某些事务的效率,但也可能使另一些事务不得不执行连接操作,从而降低效率。因此是否进行垂直分解取决于分解后R上的所有事务的总效率是否得到了提高。垂直分解需要确保无损连接性和保持函数依赖,即保证分解后的关系具有无损连接性和保持函数依赖性。

    三、设计用户子模式

    将概念模型转换为全局逻辑模型后,还应该根据局部应用的需求,结合具体关系数据库管理系统的特点设计用户的外模式。
    定义数据库全局模式主要从系统的时间效率、空间效率、易维护等角度出发。由于用户模式与模式是相对独立的,因此在定义用户外模式时开可以注重考虑用户的习惯与方法。
    1. 使用更符合用户习惯的别名。用视图机制可以在设计用户视图时重新定义某些属性名,使其与用户习惯一致,以方便使用。
    2. 可以对不同级别的用户定义不同的视图,以保证系统的安全性。
    3. 简化用户对系统的使用。如果某些局部应用中经常要使用某些很复杂的查询,为了方便用户,可以将这些复杂查询定义为视图,用户每次只对定义好的视图进行查询,大大简化了用户的使用。

    展开全文
  • 数据库逻辑设计

    千次阅读 2018-03-13 15:40:59
    数据库逻辑设计数据库设计数据库设计包含需求设计、逻辑设计、物理设计和维护优化。 - 需求分析:全面了解产品设计的存储需求(存储需求,数据处理需求,数据的安全性和完整性) - 逻辑设计:设计数据的逻辑存储...
  • 数据库设计】逻辑设计-ER模型转换为关系模型

    万次阅读 多人点赞 2017-09-26 16:06:05
    如何把ER模型转换为关系模型这是数据库工程设计进行到逻辑设计的一重大环节,简单的说,如果概念设计是用ER模型, 整合为全局的ER模型,那么在逻辑设计这块, 主要任务就是把ER模型转换为关系模型。转换只需知道三个...
  • SQL Server 数据库名字 数据库文件的逻辑文件名的查询和修改在 SQL Server 的企业管理器中,似乎不能直接更改数据库名称,如果要更改,最方便的是在查询分析器中运行: alter database 原数据库名称 modify name=...
  • 实验10 数据库系统的逻辑设计与物理设计 一、实验目的 1.能够将E-R图转换为对应的关系模式。 2.能够对关系模式进行规范化的分析和验证。 3.能够在业务需求发生变化时正确调整关系模式。 4.能够将关系模式图转换...
  • oracle数据库——逻辑结构

    千次阅读 2018-01-14 22:24:10
    逻辑结构oracle数据库逻辑结构可分为: 表空间 数据块 区 段   在介绍数据库的基本逻辑结构之前我们应该首先有数据库对象的概念,在运用数据库的过程中我们创建的表、视图、索引、存储过程、触发器等包括用户都...
  • SQL Server 数据库名字 数据库文件的逻辑文件名的查询和修改在 SQL Server  的企业管理器中,似乎不能直接更改数据库名称,如果要更改,最方便的是在查询分析器中运行:  alter database 原...
  • 数据库 - 逻辑结构设计

    万次阅读 2015-05-08 10:22:24
    逻辑结构设计逻辑结构设计的任务 把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构 逻辑结构设计的步骤 将概念结构转化为一般的关系、网状、层次模型 将转换来的关系...
  • 数据库设计:逻辑结构设计

    千次阅读 2010-01-06 00:35:00
     数据库逻辑结构设计的任务是将概念模型转换成DBMS支持的数据模型。 逻辑结构设计的步骤:将概念模型转换成为一般的关系、网状、层次模型;将转换来的模型向特定的DBMS支持的数据模型转换;对数据模型进行优化
  • 数据库逻辑结构设计

    千次阅读 2019-09-03 09:29:01
    数据库逻辑设计的过程是将概念结构转换成特定DBMS支持的数据模型的过程。从此开始便进入了“实现设计”阶段,需要考虑到具体DBMS的性能、具体的数据模型特点。E-R图表示的概念模型可以转换成任何一种具体的DBMS所...
  • 数据库逻辑结构

    万次阅读 2018-04-14 19:06:57
    一、 存储关系oracle数据库 ~ 一个或多个表空间组成 ~ 逻辑上表空间 ~ 一个或多个数据文件 ~ 物理上为每种不同的数据对象 ~ 分配不同的段 ~ 保存数据emp表 ~ 所有数据 ~ 存放在emp段中段 ~ 一个或多个区组成...
  • 在企业管理器中,一旦数据库已经创建,需要修改数据库的名称、数据库文件名就会变成一种很困难的事情,需要在查询分析器中通过一些系统命令来完成。 1.修改数据库名  操作步骤:先把数据库改成单用户模式,修改库名...
  • 修改 数据库文件名(逻辑文件名)

    千次阅读 2013-01-08 19:35:27
    --修改 数据库文件名(逻辑文件名) DECLARE @name VARCHAR(64) DECLARE @i INT, @j INT, @count INT DECLARE @newname VARCHAR(164) DECLARE @db_name VARCHAR(132) DECLARE @sql N
  • 一句话描述:逻辑删除建议使用2张表。 通常我们在做配置类的表设计时, 为了审计谁最后废弃删除了配置数据。 为了在误删除数据时,很方便的恢复数据。...对更新和查询数据库的性能影响也较大。表现如下: 查...
  • 数据库逻辑删还是物理删?

    千次阅读 多人点赞 2021-04-02 23:04:46
    你的项目数据库规定是逻辑删还是物理删?有“删库跑路”的可能么?
  • 数据库逻辑结构设计

    万次阅读 多人点赞 2018-06-30 23:21:51
    逻辑结构是独立于任何一种数据模型的,在实际应用中,一般所用的数据库环境已经给定(如SQL Server或Oracle或MySql)。由于目前使用的数据库基本上都是关系数据库,因此首先需要将E-R图转换为关系模型,然后根据具体...
  • 现有数据库为“Test”,想要修改“NewTest”,并且也修改逻辑文件名称和数据库物理名称。 说明: 1)禁止在生产环境,并且正在使用的数据库进行名称修改。 2)三者名称可以不统一,但是名称一致更好。 3)三者...
  • SAP的逻辑数据库

    千次阅读 2015-03-26 21:32:06
    文章连接:SAP的逻辑数据库
  • 简单的 数据库 and or 逻辑

    千次阅读 2012-07-02 12:33:06
    数据库中查询数据的时候,经常会用到 and or 进行条件的编写,如果条件比较长,用到了比较多的and 和or,就需要注意括号的使用了。举例如下: select * from Table_1 结果为: id a b 1 A1 B1 2 A1 B2 3 A2...
  • 数据库逻辑运算符

    千次阅读 2019-04-18 10:32:47
    一般我们查询都是有条件的,很少会查询全量数据,所以我们会根据一些特定条件去海量数据查询我们希望的结果,这个条件就是在where子句。 Where字句:用来判断数据,也就是根据条件筛选数据。Where 子句返回...
  • 一. 前言 ...逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现。 1)mysqldump mysqldump是采用SQL级别的备份机制,他将数据表导成SQL脚本文件,是最常用的逻辑备份方法
  • 重新学习一下ABAP里面的逻辑数据库

    千次阅读 2012-06-27 12:33:50
    之前以为逻辑数据库就仅仅是个选择界面那么简单,其实不是的,逻辑数据库还有很多名堂的。 逻辑数据常常要与 “START-OF-SELECTION"连合着一起使用。 NODES: spfli,sflight,sbook. DATA:weight TYPE i. START...
  • 1.数据库表的逻辑备份与恢复 逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程,逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程。 物理...
  • 数据库 - 设计:逻辑设计

    千次阅读 2018-10-27 10:46:46
    数据库 - 设计:逻辑设计 逻辑设计是关于将实体,关系和多值属性映射到逻辑模式中。   将公司ER模式映射到关系模式的结果。 希望你已经出现了最后一部分数据库 - 建模:实体关系图(ERD)(第5部分) 我们将...
  • 数据库设计逻辑主键

    千次阅读 2013-12-01 17:21:38
    数据库设计中我们经常会存在是否为表建立逻辑主键(代理主键)的问题。 使用逻辑主键的好处:   1.业务系统中需要关联时使用逻辑ID进行关联--而不是有业务ID做关联--使业务系统具有最大的灵活性,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 938,309
精华内容 375,323
关键字:

数据库里写逻辑