精华内容
下载资源
问答
  • 数据库设计

    2018-11-12 22:25:25
    数据库设计概述 数据库设计是指对于一个给定的应用环境,构造(设计)优化数据库逻辑模式和物理结构,...•程序设计的方法和技巧 •数据库的基本知识 •数据库设计技术 •应用领域的知识 数据库设计的基本步骤 需...

    数据库设计概述

    数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。

    1. 数据库设计的特点
    2. 数据库设计方法
      •计算机的基础知识
      •软件工程的原理和方法
      •程序设计的方法和技巧
      •数据库的基本知识
      •数据库设计技术
      •应用领域的知识
    3. 数据库设计的基本步骤
      需求分析
      概念结构设计
      逻辑结构设计
      物理结构设计
      数据库实施
      数据库运行和维护
    4. 数据库设计过程中的各级模式

    需求分析

    1. 需求分析的任务
    2. 需求分析的方法
    3. 数据字典
      数据项
      数据结构
      数据流
      数据存储
      处理过程

    概念结构设计

    1. 概念模型
    2. E-R模型
      1.实体之间的联系1. 实体之间的联系1. 实体之间的联系1. 实体之间的联系
      (1)两个实体型之间的联系:
      ①一对一联系(1∶1)
      ②一对多联系(1∶n)
      ③多对多联系(m∶n)
      (2)两个以上的实体型之间的联系
      (3)单个实体型内的联系
      2.E-R图
      3.一个实例
    3. 概念结构设计
      1.实体与属性的划分原则
      两条准则:
      (1)作为属性,不能再具有需要描述的性质。属性必须是不可分的数据项,不能包含其他属性。
      (2)属性不能与其他实体具有联系,即E-R图中所表示的联系是实体之间的联系。
      2.E-R图的集成

    逻辑结构设计

    1. E-R图向关系模型的转换
      转换内容
      转换原则
    2. 数据模型的优化
    3. 设计用户子模式

    物理结构设计

    数据库物理设计的步骤
    确定数据库的物理结构
    对物理结构进行评价
    若 评价结果满足原设计要求,则可进入到物理实施
    阶段。否则,就需要重新设计或修改物理结构,有时
    甚至要返回逻辑设计阶段修改数据模型。

    1. 数据库物理设计的内容和方法
      设计物理数据库结构的准备工作
      选择物理数据库设计所需参数
      关系数据库物理设计的内容
    2. 关系模式存取方法选择
      数据库管理系统常用存取方法
      1.B+树索引存取方法
      2.Hash索引存取方法
      3.聚簇存取方法
    3. 确定数据库的存储结构
      确定数据库物理结构主要指确定数据的存放位置和存储结构,包括:确定关系、索引、聚簇、日志、备份等的存储安排和存储结构,确定系统配置等。

    确定数据的存放位置和存储结构要综合考虑存取时间、存储空间利用率和维护代价3个方面的因素。

    影响数据存放位置和存储结构的因素
    硬件环境
    应用需求
    存取时间
    存储空间利用率
    维护代价

    1. 确定数据的存放位置

    2. 确定系统配置

    3. 评价物理结构

    数据库的实施和维护

    1. 数据的载入和应用程序的调试
      数据库结构建立好后,就可以向数据库中装载数据了。组织数据入库是数据库实施阶段最主要的工作。
      数据装载方法
      人工方法
      计算机辅助数据入库

    2. 数据库的试运行
      应用程序调试完成,并且已有一小部分数据入库后,就可以开始对数据库系统进行联合调试,也称数据库的试运行。

    主要工作包括:
    功能测试:实际运行应用程序,执行对数据库的各种操作,测试应用程序的各种功能。
    性能测试:测量系统的性能指标,分析是否符合设计目标。

    数据库性能指标的测量

    数据的分期入库

    数据库的转储和恢复

    1. 数据库的运行和维护
      1.数据库的转储和恢复
      2 数据库的安全性、完整性控制
      3.数据库性能的监督、分析和改进
      4.数据库的重组织与重构造
    展开全文
  • 数据库优化

    2018-09-18 20:09:36
    数据库优化的八种方法 首先 在数据库的设计上 适度的反范式,注意是适度的 我们都知道三范式,基于三范式建立的模型是最有效保存数 据的方式,也是最容易扩展的模式。我们在开发应用程序时,设计的数据库要最大...

    数据库优化的八种方法

    首先 在数据库的设计上
    适度的反范式,注意是适度的

    我们都知道三范式,基于三范式建立的模型是最有效保存数 据的方式,也是最容易扩展的模式。我们在开发应用程序时,设计的数据库要最大程度的遵守三范式,特别是对于OLTP型的系统,三范式是必须遵守的规则。当 然,三范式最大的问题在于查询时通常需要join很多表,导致查询效率很低。所以有时候基于性能考虑,我们需要有意的违反三范式,适度的做冗余,以达到提 高查询效率的目的。
    1.选取最适用的字段属性
    MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。
    另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOTNULL,这样在将来执行查询的时候,数据库不用去比较NULL值。
    对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。
    2、使用连接(JOIN)来代替子查询(Sub-Queries)
    MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询,如下所示:
    DELETE FROM customerinfo
    WHERE CustomerID NOT IN (SELECT CustomerID FROM salesinfo)
    使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN)…替代。例如,假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成:
    SELECT * FROM customerinfo
    WHERE CustomerID NOT IN (SELECTC ustomerID FROM salesinfo)
    如果使用连接(JOIN)…来完成这个查询工作,速度将会快很多。尤其是当salesinfo表中对CustomerID建有索引的话,性能将会更好,查询如下:
    SELECT * FROM customerinfo
    LEFT JOIN salesinfo ON customerinfo.CustomerID=salesinfo.CustomerID
    WHERE salesinfo.CustomerID ISNULL
    连接(JOIN)…之所以更有效率一些,是因为MySQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作。
    3、使用联合(UNION)来代替手动创建的临时表
    MySQL从4.0的版本开始支持union查询,它可以把需要使用临时表的两条或更多的select查询合并的一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库整齐、高效。使用union来创建查询的时候,我们只需要用UNION作为关键字把多个select语句连接起来就可以了,要注意的是所有select语句中的字段数目要想同。下面的例子就演示了一个使用UNION的查询。
    SELECT Name,Phone FROM client UNION
    SELECT Name,BirthDate FROM author UNION
    SELECT Name,Supplier FROM product
    4、事务
    尽管我们可以使用子查询(Sub-Queries)、连接(JOIN)和联合(UNION)来创建各种各样的查询,但不是所有的数据库操作都可以只用一条或少数几条SQL语句就可以完成的。更多的时候是需要用到一系列的语句来完成某种工作。但是在这种情况下,当这个语句块中的某一条语句运行出错的时候,整个语句块的操作就会变得不确定起来。设想一下,要把某个数据同时插入两个相关联的表中,可能会出现这样的情况:第一个表中成功更新后,数据库突然出现意外状况,造成第二个表中的操作没有完成,这样,就会造成数据的不完整,甚至会破坏数据库中的数据。要避免这种情况,就应该使用事务,它的作用是:要么语句块中每条语句都操作成功,要么都失败。换句话说,就是可以保持数据库中数据的一致性和完整性。事物以BEGIN关键字开始,COMMIT关键字结束。在这之间的一条SQL操作失败,那么,ROLLBACK命令就可以把数据库恢复到BEGIN开始之前的状态。

    BEGIN; INSERT INTO salesinfo SET CustomerID=14; UPDATE inventory SET Quantity=11 WHERE item=‘book’; COMMIT;

    事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的操作不被其它的用户所干扰。
    5、锁定表
    尽管事务是维护数据库完整性的一个非常好的方法,但却因为它的独占性,有时会影响数据库的性能,尤其是在很大的应用系统中。由于在事务执行的过程中,数据库将会被锁定,因此其它的用户请求只能暂时等待直到该事务结束。如果一个数据库系统只有少数几个用户来使用,事务造成的影响不会成为一个太大的问题;但假设有成千上万的用户同时访问一个数据库系统,例如访问一个电子商务网站,就会产生比较严重的响应延迟。

    其实,有些情况下我们可以通过锁定表的方法来获得更好的性能。下面的例子就用锁定表的方法来完成前面一个例子中事务的功能。

    LOCK TABLE inventory WRITE SELECT Quantity FROM inventory WHERE Item=‘book’;

    UPDATE inventory SET Quantity=11 WHERE Item=‘book’; UNLOCKTABLES

    这里,我们用一个select语句取出初始数据,通过一些计算,用update语句将新值更新到表中。包含有WRITE关键字的LOCKTABLE语句可以保证在UNLOCKTABLES命令被执行之前,不会有其它的访问来对inventory进行插入、更新或者删除的操作。
    6、使用外键
    锁定表的方法可以维护数据的完整性,但是它却不能保证数据的关联性。这个时候我们就可以使用外键。
    例如,外键可以保证每一条销售记录都指向某一个存在的客户。在这里,外键可以把customerinfo表中的CustomerID映射到salesinfo表中CustomerID,任何一条没有合法CustomerID的记录都不会被更新或插入到salesinfo中。
    CREATE TABLE customerinfo( CustomerIDINT NOT NULL,PRIMARYKEY(CustomerID))TYPE=INNODB;
    CREATE TABLE salesinfo( SalesIDNT NOT NULL,CustomerIDINT NOT NULL,
    PRIMARYKEY(CustomerID,SalesID),
    FOREIGNKEY(CustomerID) REFERENCES customerinfo(CustomerID) ON DELETE CASCADE)TYPE=INNODB;
    注意例子中的参数“ON DELETE CASCADE”。该参数保证当customerinfo表中的一条客户记录被删除的时候,salesinfo表中所有与该客户相关的记录也会被自动删除。如果要在MySQL中使用外键,一定要记住在创建表的时候将表的类型定义为事务安全表InnoDB类型。该类型不是MySQL表的默认类型。定义的方法是在CREATETABLE语句中加上TYPE=INNODB。如例中所示。
    7、使用索引
    索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多的速度检索特定的行,尤其是在查询语句当中包含有MAX(),MIN()和ORDERBY这些命令的时候,性能提高更为明显。

    那该对哪些字段建立索引呢?
    一般说来,索引应建立在那些将用于JOIN,WHERE判断和ORDERBY排序的字段上。尽量不要对数据库中某个含有大量重复的值的字段建立索引。对于一个ENUM类型的字段来说,出现大量重复值是很有可能的情况
    例如customerinfo中的“province”…字段,在这样的字段上建立索引将不会有什么帮助;相反,还有可能降低数据库的性能。我们在创建表的时候可以同时创建合适的索引,也可以使用ALTERTABLE或CREATEINDEX在以后创建索引。此外,MySQL从版本3.23.23开始支持全文索引和搜索。全文索引在MySQL中是一个FULLTEXT类型索引,但仅能用于MyISAM类型的表。对于一个大的数据库,将数据装载到一个没有FULLTEXT索引的表中,然后再使用ALTERTABLE或CREATEINDEX创建索引,将是非常快的。但如果将数据装载到一个已经有FULLTEXT索引的表中,执行过程将会非常慢。
    8、优化的查询语句
    绝大多数情况下,使用索引可以提高查询的速度,但如果SQL语句使用不恰当的话,索引将无法发挥它应有的作用。
    下面是应该注意的几个方面。

    首先,最好是在相同类型的字段间进行比较的操作。
    在MySQL3.23版之前,这甚至是一个必须的条件。例如不能将一个建有索引的INT字段和BIGINT字段进行比较;但是作为特殊的情况,在CHAR类型的字段和VARCHAR类型字段的字段大小相同的时候,可以将它们进行比较。
    其次,在建有索引的字段上尽量不要使用函数进行操作。
    例如,在一个DATE类型的字段上使用YEAE()函数时,将会使索引不能发挥应有的作用。所以,下面的两个查询虽然返回的结果一样,但后者要比前者快得多。
    第三,在搜索字符型字段时,我们有时会使用LIKE关键字和通配符,这种做法虽然简单,但却也是以牺牲系统性能为代价的。
    例如下面的查询将会比较表中的每一条记录。
    SELECT * FROM books
    WHERE name like"MySQL%"
    但是如果换用下面的查询,返回的结果一样,但速度就要快上很多:
    SELECT * FROM books
    WHERE name>=“MySQL” andname <"MySQM"
    最后,应该注意避免在查询中让MySQL进行自动类型转换,因为转换过程也会使索引变得不起作用。
    参考文献:https://www.cnblogs.com/zhyunfe/p/6209074.html
    http://www.cnblogs.com/villion/archive/2009/07/23/1893765.html

    展开全文
  • E-R方法进行数据库概念设计

    万次阅读 2016-10-04 10:53:13
    0、试述采用E-R方法进行数据库概念设计的过程。 答:采用E-R方法进行数据库概念设计,可以分成3步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局的E-R模式,最后对全局E-R模式进行优化,得到最终...

    0、试述采用E-R方法进行数据库概念设计的过程。

    答:采用E-R方法进行数据库概念设计,可以分成3步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局的E-R模式,最后对全局E-R模式进行优化,得到最终的E-R模式,即概念模式。

    1、某大学实现学分制,学生可根据自己情况选课。每名学生可同时选修多门课程,每门课程可由多位教师主讲;每位教师可讲授多门课程。其不完整的E-R图如图1所示。

    (1)       指出学生与课程的联系类型。

    (2)       指出课程与教师的联系类型。

    (3)       若每名学生有一位教师指导,每个教师指导多名学生,则学生与教师是如何联系?

    (4)       在原E-R图上补画教师与学生的联系,并完善E-R图。

    答:

    (1)       学生与课程联系类型是多对多联系。

    (2)       课程与教师的联系类型是多对多联系。

    (3)       学生与教师的联系类型是一对多联系。

    (4)       完善本题E-R图的结果如图2所示。


                


           

    2、将如图3所示的E-R图转换为关系模式,菱形框中的属性自己确定。

    答:本题的E-R图转换为如下的关系模式:

    单位(单位号,地址,电话)

    职工(职工号,姓名,性别,年龄,单位号)


     

    3、假定一个部门的数据库包括以下信息:

    (1)       职工的信息:职工号、姓名、地址和所在部门。

    (2)       部门的信息:部门所有职工、部门名、经理和销售的产品。

    (3)       产品的信息:产品名、制造商、价格、型号及产品的内部编号。

    (4)       制造商的信息:制造商名称、地址、生产的产品名和价格。

    试画出这个数据库的E-R图。

    答:本题对应的E-R图如图 4所示。


    4、某医院病房计算机管理中心需要如下信息:

    科室:科名、科地址、科电话、医生姓名

    病房:病房号、床位号、所属科室名

    医生:姓名、职称、所属科室名、年龄、工作证号

    病人:病历号、姓名、性别、诊断、主管医生、病房号

    其中,一个科室有多少个病房、多少个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。

    完成如下设计:

    (1)       设计该计算机管理系统的E-R图

    (2)       将该E-R图转换为关系模式结构。

    (3)       指出转换结果中每个关系模式的后选码。

    答:(1)本题的E-R图如图5所示。


    (2)对应的关系模式结构如下:

    科室(科名,科地址,科电话)

    病房(病房号,床位号,科室名)

    医生(工作证号,姓名,职称,科室名,年龄)

    病人(病历号,姓名,性别,主管医生,病房号)

    (3)每个关系的后选码如下:

    科室的后选码是科名。

    病房的后选码是科室名+病房号。

       医生的后选码是工作证。

       病人的后选码是病历号。

    5、设有如下实体:

    学生:学号、单位名称、姓名、性别、年龄、选修课名

    课程:编号、课程名、开课单位、认课教师号

    教师:教师号、姓名、性别、职称、讲授课程编号

    单位:单位名称、电话、教师号、教师姓名

    上述实体中存在如下联系:

    (1)       一个学生可选多门课程,一门课程可被多个学生选修。

    (2)       一个教师可讲授多门课程,一门课程可由多个教师讲授。

    (3)       一个单位可有多个教师,一个教师只能属于一个单位。

    试完成如下工作:

    (1)       分别设计学生选课和教师任课两个局部E-R图。

    (2)       将上述设计完成的E-R图合并成一个全局E-R图。

    (3)       将全局E-R图转换为等价的关系模式表示的数据库逻辑结构。

    答:(1)学生选课局部E-R图如图6所示,教师任课局部E-R图如图7所示。


     


    (2)合并的全局E-R图如图8所示。


    为避免复杂,合并的全局E-R图中省略了以下各实体的属性:

    单位:单位名称,电话

    学生:学号,姓名,性别,年龄

    教师:教师号,姓名,性别,职称

    课程:编号,课程名

    (3)该全局E-R图转换为等价的关系模式表示的数据逻辑结构如下:

    单位(单位名称,电话)

    课程(教师号,姓名,性别,职称,单位名称)

    学生(学号,姓名,性别,年龄,单位名称)

    讲授(教师号,课程编号)

    选修(学号,课程编号)

    6、图9给出(a)、(b)和(c)3个不同的局部模型,将其合并成一个全局信息结构,并设置联系实体中的属性(准许增加认为必要的属性,也可将有关基本实体的属性选作联系实体的属性)。

    各实体构成如下:

    部门:部门号、部门名、电话、地址

    职员:职员号、职员名、职务(干部/工人)、年龄、性别

    设备处:单位号、电话、地址

    工人:工人编号、姓名、规格、价格

    设备:设备号、名称、规格、价格

    零件:零件号、名称、规格、价格

    厂商:单位号、名称、电话、地址


       答:汇总后的E-R图如图6.20所示。


    各类实体的属性为:

    部门:部门号、部门名、电话、地址

    职工:职工号、职工名、职务、年龄、性别

    设备:设备号、名称、规格、价格

    零件:零件号、名称、规格、价格

    7、一个图书馆借阅管理数据库要求提供下述服务:

    (1)可随时查询书库中现有书籍的品种、数量与存放位置。所有各类书籍均可由书号惟一标识。

    (2)可随时查询书籍借还情况,包括借书人单位、姓名、借书证号、借书日期和还书日期。

    我们约定:任何人可借多种书,任何一种书可为多个人所借,借书证号具有惟一性。

    (3)当需要时,可通过数据库中保存的出版社的电报编号、电话、邮编及地址等信息下相应出版社增购有关书籍。我们约定,一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有惟一性。

    根据以上情况和假设,试作如下设计:

    (1)   构造满足需求的E-R图。

    (2)   转换为等价的关系模式结构。

    答:(1)满足上述需求的E-R图如图11所示。


    (2)转换为等价的关系模式结构如下:

    借书人(借书证号,姓名,单位)

    图书(书号,书名,数量,位置,出版社名)

    出版社(出版社名,电报编号,电话可,邮编,地址)

    借阅(借书证号,书号,借书日期,还书日期)

    8、工厂(包括厂名和厂长名)需建立一个管理数据库存储以下信息:

    (1)   一个工厂内有多个车间,每个车间有车间号、车间主任姓名、地址和电话。

    (2)   一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种。

    (3)   一个车间生产多种产品,产品有产品号和价格。

    (4)一个车间生产多种零件,一个零件也可能为多个车间制造。零件有零件号、重量和价格。

    (5)一个产品由多种零件组成,一种零件也可装配出多种产品。

    (6)产品与零件均存入仓库中。

    (7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。

    试:(1)画出该系统的E-R图。

    (2)给出相应的关系模式。

      (3)画出该系统的层次模式图。

    答:(1)该系统的E-R图如图12所示。

    各实体的属性为:

    工厂:厂名、厂长姓名

    车间:车间号、车间主任姓名、地址、电话

    工人:职工号、姓名、年龄、性别、工种

    仓库:仓库号、仓库主任姓名、电话

    零件:零件号、重量、价格

    产品:产品号、价格


    (2)相应的关系模式如下:

    工厂(厂名、厂长姓名)

    车间(车间号、车间主任姓名、地址、电话、厂名)

    工人(职工号、姓名、年龄、性别、工种、车间号)

    仓库(仓库号、仓库主任姓名、电话、长名)

    产品(产品号、价格、车间号、仓库号)

    零件(零件号、重量、价格、仓库号)

    制造(车间号、零件号)

    (3)该系统的层次模型图如图13所示。

    8、有如下运动队和运动会两个方面的实体:

    1.运动队方面

    运动队:队名、教练姓名、队员姓名

    队员:队名、队员姓名、性别、项名

    其中,一个运动队有多个队员,一个队员仅属于一个运动队,一个队一般有一个教练。

    2.运动会方面

    运动队:队编号、队名、教练姓名

    项目:项目名、参加运动队编号、队员姓名、性别、比赛场地

    其中,一个项目可由多个队参加,一个运动员可参加多个项目,一个项目一个比赛场地。


        请完成如下设计:

    (1)   分别设计运动队和运动会两个局部E-R图。

    (2)   将他们合并为一个全局E-R图。

    (3)   合并时存在什么冲突,你是如何解决这些冲突的?

    答:(1)运动队局部E-R图如图14所示,运动会局部E-R图如图15所示。



    (2)合并结果如图6.26所示。

     


         (3)命名冲突:项名、项目名异名同义,统一命名为项目名。

    结构冲突:项目在两个局部E-R图中,一个作属性,一个作实体,合并统一为实体。

    9、假设要建立一个企业数据库,该企业有多个下属单位,每一个单位有多个职工,一个职工仅隶属于一个单位,且一个职工仅在一个工程中工作,但一个工程中有很多职工参加工作,有多个供应商为各个工程供应不同设备。单位的属性有:单位名、电话。职工的属性有:职工号、姓名、性别。设备的属性有:设备号、设备名、产地。供应商的属性有:姓名、电话。工程的属性有:工程名、地点。

    请完成如下处理:

    (1)   设计满足上述要求的E-R图。

    (2)   将该E-R图转换为等价的关系模式。

    (3)   根据你的理解,用下划线标明每个关系中的码。

       答:(1)满足要求的E-R图如图17所示。


    各实体的属性如下:

    单位(单位名、电话)

    职工(职工号、姓名、性别)

    设备(设备名、设备号、产地)

    供应商(姓名、电话)

    工程(工程名、地点)

    (2)转换后的关系模式如下:

    单位(单位名、电话)

    职工(职工号、单位名、工程名、姓名、性别)

    设备(设备名、设备号、产地)

    供应商(姓名、电话)

    工程(工程名、地点)

    供应(供应商姓名、工程名、设备号、数量)(3)见(2)中下划线。

    10、图反映了一个公司部门(DEPT)、职工(EMP)、工程(PROJ)、材料(PART)、材料供应商(SUPP)和仓库(WH)之间联系的E-R图。建立它的关系模式。


    答:对应的关系模式如下:

      部门(部门号,部门名,…)

      职工(职工号,职工名,部门号,工程号,…)

      工程(工程号,工程名,…)

      材料(材料号,材料名,…)

      材料供应商(供应商号,姓名,…)

    仓库(仓库号,仓库名,地点,…)

    INV(仓库号,材料号

    S-PR-PA(供应商号,公称好,材料号

    有下划线的属性或属性组为码。

    11、设一个海军基地要建立一个舰队管理信息系统,它包括如下两个方面的信息:

    1.舰队方面

      舰队:舰队名称、基地地点、舰艇数量

      舰艇:编号、舰艇名称、舰队名称

    2.舰艇方面

      舰艇:舰艇编号、舰艇名、武器名称

      武器:武器名称、武器生产时间、舰艇编号

      官兵:官兵证号、姓名、舰艇编号

    其中,一个舰队拥有多艘舰艇,一艘舰艇属于一个舰队;一艘舰艇安装多种吴起,一个武器可安装于多艘舰艇上;一艘舰艇有多个官兵,一个官兵只属于一艘舰艇。

    请完成如下设计:

    (1)   分别设计舰队和舰艇两个局部E-R图。

    (2)   将上述两个局部E-R图合并为一个全局E-R图。

    (3)   将该全局E-R图转换为关系模式。

    (4)   合并时是否存在命名冲突?如何处理?

    答:(1)舰队和舰艇两个局部E-R图分别如图所示。

        (2)将图19和图20所示出两个局部E-R图合并为如图21所示的全局E-R图。

    (3)转换的关系模式如下:

       舰队(舰队名称,基地地点)

    舰艇(舰艇编号,舰艇名称,舰队名称,舰艇数量)

    官兵(官兵证号,姓名,舰艇编号)

    武器(武器名称,武器生产时间)

    安装(舰艇编号,吴起名称)

    (4)存在冲突,表现在:

    ● “舰艇编号”和“编号”存在异名同义,合并时统一为“舰艇编号”。

    ● “舰艇名”和“舰艇名称”存在异名同义,合并时统一为“舰艇名称”。


          12、社某商业集团数据库中有3个实体集,一是“商品”实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等。


    商店与商品间存在“销售”联系,每个商店可销售多种商品,每中商品也可以放在多个商店销售,每个商店孝顺的一种商品有月销售量;商店与职工之间存在“聘用”联系,每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和工资。

    (1)   试画出E-R图。

    (2)   将该E-R图转换成关系模式,并指出主码和外码。

    答:(1)对应的E-R图如图所示。


    (2)这个E-R图可转换为如下关系模式:

    商店(商店编号,商店名,地址) 商店编号为主码

    职工(职工编号,姓名,性别,业绩,商店编号,聘期,工资) 职工编号为主码,商店编号为外码。

    商品(商品号,商品名,规格,单价) 商品号为主码

    销售(商店编号,商品号,月销售量) 商店编号+商品号为主码  商店编号,商品号均为外码

    13、学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干研究生,每个班有若干学生,每个学生选修若干课程,每门课可由若干学生选修。请用E-R图画出此学校的概念模型,实体的属性可自行设计。

    答:对应的E-R图如图23所示。各实体的属性如下:

    系:系名,系主任号,系地址,系电话

    班级:班号,班长,人数

    教研室:教研室名,地址,电话

    学生:学号,姓名,性别,年龄,籍贯,入学年份,专业

    本科生:已修学分,平均成绩

    研究生:研究方向,导师姓名

    教员:姓名,年龄,性别,职称,专长

    正副教授:科研项目,研究方向


     转自百度文库:

    展开全文
  • 1.6.4 数据库引擎优化顾问 ........................................................................ 15 1.6.5 实用工具 ......................................................................................
  • 整个应用系统的设计严格按照数据库设计的方法来进行,包括数据库的设计和应用程序的设计,两部分相辅相成。 1.数据库设计过程包含以下步骤:  需求分析:系统的目的、用户的各种可能要求、业务流程图、数据流程图...
  • 文章目录前言一、数据库设计概述二、需求分析三、概念设计四、逻辑设计五、...数据库设计是指对于一个给定应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管...

    前言

    这章主要介绍了数据库设计的相关概念,整体目标和需要解决的问题。并按照新奥尔良设计方法对需求分析、概念设计、逻辑设计几个阶段的具体工作进行了详细说明

    一、数据库设计概述

    1. 什么是数据库设计?
      数据库设计是指对于一个给定的应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求。

    2. 数据库设计的目标
      设计目标:为用户和各类应用系统提供一个信息基础设施和高效的运行环境

    高效的运行环境包括:
    数据库数据的存取效率
    数据库存储空间的利用率
    数据库系统运行管理的效率

    3.数据库设计方法
    == 新奥尔良方法==的四个阶段

    • 需求分析(分析用户需求)
    • 概念设计(信息分析和定义)
    • 逻辑设计(依据实体联系进行设计)
    • 物理设计(物理结构设计)

    在这里插入图片描述

    二、需求分析

    需求分析阶段主要是收集信息并进行分析和整理,为后续阶段提供充足信息。

    需求分析阶段需要:

    • 了解现有系统的运行概况。
    • 确定新系统的功能要求。
    • 收集能够实现目标的基础数据及相关的业务流程。

    三、概念设计

    概念设计的任务?
    分析用户提出的需求,对用户需求进行综合、归纳和抽象,形成一个独立于具体数据库管理系统的概念层次抽象模型,即为概念数据模型。

    1. E-R方法
      1976年P.P.S.Chen提出了实体-联系(Entitiy-Relationship)方法,即E-R方法。
      简单、实用。
      是构建概念模型常用的方法之一。
    • E-R方法使用的工具称为E-R图

    • E-R图在概念设计阶段使用的比较广泛。

    • 用E-R模型表示的数据库概念非常直观,易于用户理解。

    • E-R图主要由实体、属性和联系三个要素构成。

      实体:
      具有公共性质并且可以相互区分的现实世界对象的集合,例如:老师,学生,课程都是实体。

      实体中每个具体的记录值,如学生实体中每个具体的学生,称之为实体的一个实例。
      在E-R图中一般用矩形框表示具体的实体。
      在这里插入图片描述

      属性:
      描述实体性质或特征的数据项。
      属于一个实体的所有实例都具有相同的性质。这些性质和特征就是属性,比如学生的学号、姓名和性别等。

      在概念模型中一般用圆角矩形框表示属性。
      在这里插入图片描述

      联系:
      描述实体内部以及实体之间的联系。
      联系使用菱形框表示。
      在这里插入图片描述
      实体之间的联系通常分为3类:

      • 一对一联系(1:1):例如一个班级有一个班主任。
      • 一对多联系(1:n): 例如一个班级有n个学生组成。
      • 多对多联系(m:n):例如学生选修课程。一个学生可以选修多门课程,一门课程也可以被多个学生选修。

    四、逻辑设计

    逻辑设计:
    这个阶段是将概念模型转化为具体的数据模型的过程
    按照概念设计阶段建立的基本E-R图,按选定的目标数据模型(层次、网状、关系、面向对象),转换成相应的逻辑模型。
    这个阶段主要的工作就是确定关系模型里面的属性和码(或者说主键)
    比较常用的方式是使用E-R设计工具,IDEF1x方法来进行逻辑模型建设,常用的ER图表示法包括IDEF1x,IE模型的Crow’s foot ,UML类图方式等。

    1. IDEF1X方法
      IDEF1X(Integration DEFinition for Information Modeling):信息模型集成定义
      IDEF1X是IDEF系列方法中IDEF1的扩展版本,是在E-R(实体联系)方法的原则基础上,增加了一些规则,使语义更为丰富的一种方法。

      IDEF1X特点:

      • 支持概念模型和逻辑模型开发所必需的寓意结构,具有良好的可扩展性。
      • 在语义概念表达上具有简明的一致性结构。
      • 便于理解,对于业务人员,IT技术人员,数据库管理员和设计者来说都可以基于相同的语言进行交流。
      • 可以自动化生成,商业化的模型软件支持IDEF1X模型设计方法,可以快速在各层级模型中相互转换
    2. 逻辑模型中的实体
      根据实体的特点,可以划分为两类

      • 独立型实体(Independent Entity)
        • 直角矩形表示。
        • 不依赖于其他实体,可以独立存在。
      • 依赖型实体(Dependent Entity)
        • 圆角矩形表示。
        • 必须依赖于其它实体而存在。
        • 依赖型实体中的主键必须是独立实体主键的一部分或者全部。

    在这里插入图片描述

    可以从图例中看出,独立性实体的主键会出现在依赖型实体的主键中,成为依赖型主键的一部分。这个实例中,我们可以看出章节依赖于书
    所以章节实体依赖于书实体存在。

    1. 实体中的属性
      属性是实体的特征,需要注意的类型有:
      • 主键(Primary Key)
        识别实体实例唯一性的属性或属性组。

      • 可选键
        能识别实体实例唯一性的其他属性或者属性组。

      • 外键
        两个实体发生关联,一个实体的外键是另外一个实体的主键。
        也可以把主键实体称为父实体,拥有外键的实体称为子实体。

      • 非键属性
        实体里面除主键和外键属性外的其他属性。

      • 派生属性
        一个字段可以被统计出来或者从其它字段推导出来的字段。

    在这里插入图片描述

    例如,学生里面姓名不能作为主键,因为重名的人会很多。那么学号或者身份证号就可以唯一的识别一个学生,可以作为主键。

    1. 主键、外键和索引之间的关系
    主键 外键 唯一索引 非唯一索引
    特点 唯一标识一个实例,无重复值,非空。不应该被更新 另外一个实体的主键,可以重复,可以为空。 建立在表上的对象。无重复值,可以有一个空值 建立在表上的对象,可以为空,也可以重复值
    作用 确定记录唯一性,保证数据完整性。 建立数据参考一致性。建立两个实体之间的关系。 提高查询效率 提高查询效率
    数量 一个实体只能有一个 一个实体可以有多个外键 一个表可以有多个唯一索引 一个表可以有多个非唯一索引
    • 主键用来识别唯一记录。

    • 外键体现两个实体之间存在关系。

    • 对外键可以重复的说明: 属性A在X表中是外键,在X表中是可以重复的。因为是外键,所以一定是另 - 外一个表的主键,假设为Y表,在Y表里面作为主键的情况下,就不允许重复了。

    • 主键和外键是逻辑模型中的概念,

    • 索引是物理层面,数据库中的具体对象。

    1. 实体间的关系

      • 关系是描述实体间如何发生关联
        一本书“包括”若干个“章节”。“包括”就是这两个实体之间的关系。
        关系是有方向性的。
        --------->关系的方向性意思是:包括这个关系,是书包括章节,而不是章节包括书。
        --------->章节->书的关系是属于的关系

      • 关系基数(Cardinality)
        反映两个或多个实体间关系的业务规则
        关系基数实际上就是在这里用特定的表示法来表达E-R方法里面的联系这个概念,一对一,一对多,多对多。

    2. IDES1x中基数的图例
      对于基数图例的说明也反映出一个重要的点就是基数反映了不同的关系,这种关系很可能反映出重要的业务规则或者约束。
      在这里插入图片描述

    基数 描述
    0,1或多个 表示的是1对多关系,多的一方的基数是0,1或者n个;
    1或者多个 表示的是1对多关系,多的一方的基数是1或者n个;
    这两个关系的区别就在于是否会有0, 如果有0就是一个可选的关系,就是关系可能存在,英语表达的是may的意思;而取值不为0的基数,就是强制的关系,就是关系一定存在,英语表达的是must的意思。
    n 表示的有且只有n的强营收和关系。比如一个矩形,有且只有4个直角。那么矩形和直角就是1->4的关系。
    n-m 表示的是一个范围区间关系。比如月份和天数的关系,一个月有多少天,随着大小月和闰年的不同, 月和天数的关系就是 1->(28-31)
    {n} 表示基数的关系不能用简单的数字说明,需要通过注释来说明这个n的取值范围。这种注释说明在实际项目中就体现了一些业务规则。举个不是十分恰当的例子,一个月与证券交易日的关系。那么一个月里面含有多少个有效的证券交易日,要看证券交易所规定每个月可以进行上市交易的日期,每年随着政策变化而变化,需要另外说明。
    1. 基数实例
      在这里插入图片描述

    0,n是可能may的表达形式,是可选的option的要求 1,n是一定must的强烈表达形式,是强制性的mandatory的要求
    关系基数实际上就是在这里用特定的表示法来表达E-R方法里面的联系这个概念,一对一,一对多,多对多。

    1. 识别性关系
      识别性关系(Identifying relationship)
    • 发生在独立型实体和依赖型实体之间。
    • 子实体的实例唯一性的识别与父实体相关联。
    • 父实体的主键属性成为子实体的主键属性。
      在这里插入图片描述
    1. 非识别性关系
    • 子实体不需要与父实体的关系就可以确定实例唯一性。
      在这里插入图片描述

      • 外键的位置又决定了父子实体是否是识别性关系还是非识别性关系
      • 外键出现在子实体的主键里面,就是识别性关系
      • 外键出现在子实体的非键属性里面,就是非识别性关系
      • 如果是识别性关系那么子实体就是依赖实体
      • 如果是非识别性关系,就是这个表里面的章节号都不能重复,而识别性关系里面,书本id是作为主键属性的,所以不同的书是可以拥有相同章节号的。

    这个图例中,章节实体不依赖于书实体,所以每个章节号只能有一个记录,这样的设计并不符合实际情况,也说明这种设计是有问题的,需要把非识别关系修改成识别关系。

    1. 嵌套关系
      父实体和子实体为同一个实体,形成递归或者嵌套的关系。
      实体的主键也成为自身的外键。
      在这里插入图片描述

    构成自身层级关系的实体就会出现嵌套关系
    部门有上级部门和下级部门
    一个部门可能拥有一个或多个下级部门
    最底层的部门不再拥有下级部门
    一级部门也没有上级部门

    1. 子类关系
      子类实体和所属父实体的关系
      在这里插入图片描述
    • 完全子类关系。
      所属父实体的每个实例都能够与子类群的一个实体实例相关联。

    • 不完全子类关系。
      所属父实体的每个实例不一定都与子类群相关联

    五、总结

    总而言之,逻辑模型的基本概念就是:

    • 实体就是描述业务的元数据。
    • 主键是识别实体每一个实例唯一性的标识。
    • 只有存在外键,实体之间才会存在关系,没有外键不能建立关系。
    • 关系的基数反映了关系之间的业务规则。

    在这里插入图片描述

    展开全文
  • 对于一个应用环境,设计优化的数据库逻辑模式和物理结构,并根此建立数据库和应用系统,使之能够长期储存和管理数据,满足各种用户需求,报考信息管理要求和数据操作要求; 目标:给用户和各种应用系统提高一个信息...
  • 这里首先对数据库连接池的优化进行了说明,同时自己编写了一个数据库连接池,在实际开发中,为了获取标准数据源,我们需要去实现javax.sal.DataSource接口, 在实现过程中对于链接对象close方法进行了不同...
  • 7数据库设计

    2019-11-18 10:56:30
    文章目录数据库设计一、数据库设计概述1、数据库设计的特点1.1数据库建设的基本规律1.2结构(数据)设计和行为(处理)设计2、数据库设计方法3、数据库设计的基本步骤4、数据库设计过程中的各级模式二、需求分析1、...
  • 该课程体系通过结合先进模式教学法,使学习者在掌握理论知识与工具同时,具备良好自我学习能力和个人素质,成为符合21世纪企业要求IT人才。  ACCP 6.0是北大青鸟APTECH推出最新软件工程师职业教育课程...
  • 关系数据理论既是关系数据库的重要理论基础也是数据库逻辑设计的理论指南和有力工具。要掌握规范化理论和优化数据库模式设计的方法
  • 数据库原理(九)- 数据库设计概述前言数据库设计的特点数据库设计方法数据库设计的基本步骤数据库设计过程中的各级模式借鉴 前言 数据库设计,广义地讲,是数据库及其应用系统得设计,即设计整个数据库应用系统;...
  • 数据库设计概述 数据库设计是指对于一个给定的应用环境,构造(设计)优化数据库逻辑模式和物理结构,...•程序设计的方法和技巧 •数据库的基本知识 •数据库设计技术 •应用领域的知识 数据库设计的基本步骤 需...
  • 数据库设计心得

    2018-11-19 12:00:00
     数据库设计主要包括几个阶段: 需求分析阶段,要处理数据包括:需求文档、数字字典、数据流图等。 概念设计阶段,即用E-R图来描述概念模型 逻辑设计阶段,即创建某种数据模型并进行优化 物理设计...
  • 本人目前项目是微信公众号一个小型电商系统,需要将邀请好友模块优化成5级分销流程,参考此文章,我选用【闭包表】模式,但是此文没有给出闭包表查询层级设定,故参考了另一篇文章。待本人项目完成奉上自己...
  • 关系数据库设计

    2021-01-04 00:14:53
    关系数据库设计的目标是生成一组关系模式,使我们存储信息时避免不必要的冗余,并且可以方便地获取信息。并通过满足适当范式(normal form)来实现设计的优化。 好的关系设计的特点 好的设计会尽可能少的引入冗余...
  • 第七章 数据库设计

    2018-11-16 20:05:53
    数据库设计概述 数据库设计是指对于一个给定的应用环境,构造(设计)优化数据库逻辑模式和物理结构,并据此...•程序设计的方法和技巧 •数据库的基本知识 •数据库设计技术 •应用领域的知识 3、数据库设计的...
  • 第9章从索引和执行计划的角度讲解了数据库性能优化的方法;第10~12章着重介绍了在数据库系统部署并运行后,如何获得数据库运行时的性能状态,如何对正在使用的各种资源进行分析,分析时使用什么工具,以及如何解读...
  • 陈晓云 李泽霞(兰州大学信息工程学院 ) 摘要 结合DB2使用经验,从数据库设计、查询优化、并发控制、客户/服务器模式四个方面来讨论数据库应用系统性能优化的一些原则、方法等.关键词 DB2 性能优化 数据库...
  • Oracle 数据库优化规则

    2011-09-20 14:45:26
    1.选用适合Oracle优化器 Oracle的优化器共有3种: a.RULE(基于规则) b.COST(基于成本) c.CHOOSE(选择性) 设置缺省的优化器,可以通过对init.ora...20页文档,上百条优化规则 ,让你对数据库及SQL语言的设计更有效率。
  • 1、针对以上的需求运用面向对象的方法进行需求分析。 2、设计数据库的概念结构。 先设计初步的 E-R 图,再对初步的 E-R 图进行优化,得到基本的 E-R 图。要求所建立的 概念结构能真实反映上述的应用语义。 3、设计...
  • 性能优化 优化分为:设计调优,代码...因此需要了解常用的设计模式,组件和设计方法。   善用设计模式 单例模式 确保系统中一个类只产生一个实例,好处是: 对于频繁使用对象,可以省略创建对象所花费...
  • 1.4. 数据库设计的方法 3 1.5. 数据库设计的步骤 3 2. 需求分析 4 2.1. 需求分析的任务 4 2.2. 需求分析的方法 4 2.3. 需求分析注意点 6 3. 概念设计 7 3.1. 实体关系模型 8 3.1.1. 基本概念 8 3.1.2. 实体之间的三...
  • 本例相当于上一次数据库简单操作—注册和登录实例的优化,将界面中登录的方法提取出来单独封装。采用了MVC设计模式,将界面与方法分开。使代码更具可读性。登录功能实现数据库中用户和密码的存储: 登录界面: ...
  • 在初学程序早期,程序员通常都喜欢按传统数据库设计模式设计为单库和单一功能表结构,这样结构在数据量和并发量达到一定程度之后,会出现严重性能问题和维护问题。在出现问题时候才着手进行优化,会非常...
  • Louis是一本讲数据库设计的书的4个版本的主要作者。Louis主要的兴趣领域是数据库架构和用T-SQL编码,并且,他设计过许多数据库,在这许多年中编写过数以千计的存储过程和触发器。  Scott Klein是一位独立咨询师,对...
  • Louis是一本讲数据库设计的书的4个版本的主要作者。Louis主要的兴趣领域是数据库架构和用T-SQL编码,并且,他设计过许多数据库,在这许多年中编写过数以千计的存储过程和触发器。  Scott Klein是一位独立咨询师,对...
  • 3.2. 关系模式优化 () 4. 数据库物理结构设计 () 4.1. 存取方法设计 () 4.2. 存储结构设计 () 4.3 物理设计 () 5. 数据库完整性设计 () 5.1. 主键及唯一性索引 () 5.2. 参照完整性设计 () 5.3. Check约束 () 5.4. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 755
精华内容 302
关键字:

优化数据库模式设计的方法