分片 db vba 自动获得db路径方法是不是有事务

数据库专家:MySQL分片水很深
日期:作者:翻译:来源:TechTarget中国
【TechTarget中国原创】 本文作者Peter Zaitsev是知名数据库专家,2006年联合创立了Percona。负责维护网站。同时,他也是一书的联合作者。以下是他对MySQL分片的建议: 在与客户讨论分片决策的时候,我经常会先给他们讲下面这个真实的故事。 几年前,有客户来找我,希望获得关于如何对系统分片的一些指导建议。他告诉我说,自从他知道很多应用MySQL的巨头(比如Facebook和Twitter)都在使用分片技术以后他就也想这么做。他们(这些巨头)都是聪明人,所以很自然他也相信自己需要这么做。 我停了一会然后问他的数据库有多大规模。 他说:“有10GB”。 我点头表示理解,并继续问他是否要处理许多查询或者有很多非常复杂的查询。 他回答说:“没有。每秒钟只有几百个查询,这些查询给系统带来的性能消耗只占很少的百分比。 我有问他是否预期在不远的未来数据量有指数级增长,比如每周数据量就会翻倍之类的情况。 &“不会的。我们的负载和数据规模去年增长了大约7%,我们预计今年乃至可预见的未来增长率也差不多。” 我给他的建议是不要在分片上浪费时间和精力了,因为他公司的情况需要的不是这个。 是否真的需要分片 在你决定如何分片之前,你最好从一开始弄明白你是否真的需要分片。诚然,在超大规模数据库需求的情况下,分片是唯一的途径。不只是对于MySQL,对大部分同类技术都是一样。 然而,由于出现了很多新兴技术,越来越多的应用都支持无需分片运行数据库。现在,我们可以很轻松地在每个MySQL实例上运行TB级数据,并在许多OLTP环境下支持数以万计的查询。可见我们可以构建非常庞大的应用而无需分片。 我们应该铭记:分片对所有环境都是不得已而为的做法。即便你使用的数据库支持开箱即用的分片功能,那也会由于引入更多组件和复杂度而带来麻烦。构建良好的分布式查询执行计划是非常复杂的任务,需要考虑网络拓扑结构和负载情况,另外还要考虑数据分布和每个独立节点的负载。 在判断是否需要分片之前,你应该首先考虑是否有替代方法可以扩展你的应用。在MySQL的世界里,通常有以下一些方案可以考虑。 分片的替代方案 功能分区:在许多环境中,单独的MySQL实例变成了各种数据库的倾销之所。你可能最终让你的主应用与Drupal共享一个数据库实例,用WordPress增强你的站点,用vBulletin增强你的博客,甚至论坛。把所有这些应用碎片分入不同的数据库实例是你首先应该考虑的,而不是直接考虑分片。客户定制系统经常有不同数据集的应用,所以这个分法很容易实现。 复制:许多应用都是“读操作”的压力大,而扩展读操作性能要比扩展写性能更容易一些。如果是这种情况,那么复制就是非常好的选择。MySQL有自带的复制功能非常健壮,虽然其异步特性增加了应用的复杂性。这种情况下,开发人员必须判断从哪台复制服务器上读取信息,不可以从哪里获取。因为你必须绝对保证你读取到的是最新的实际数据。这也正是针对MySQL出现的可替代的异步复制技术广受欢迎的原因(例如PerconaXtraDB)。这些工具把大部分集群环境下的功能提供给向单个数据库操作的能力。 缓存和队列:缓存是降低数据库读取量的出色技术。有许多应用使用这种技术可以降低数据库读负载高达80-95%。与之相对的是队列,它是用来优化写操作的。通过合并多次写操作,提高了对数据库操作的效率。大部分大型应用都应该重点考虑这两种技术。Memcached和Redis是MySQL领域非常流行的两种缓存技术。对于队列,最流行的技术是ActiveMQ和RabbitMQ。 外部支持技术:MySQL在很多方面都很出色,但也不是所有方面都强。如果你需要高性能全文检索,应该考虑ElasticSearch、Sphinx或者Lucene。如果你想做大规模数据分析,可以考虑基于Hadoop的基础架构或者Vertica也是不错的选择。你应该让MySQL处理它擅长的事,把其它事留给外部支持工具来做。 分片之前应该做的优化 扩展不只是针对架构而言。你还需要确保你的系统经过了合理的优化。许多人决定采用分片其实不是真正必要的,虽然对于他们来说这是获得性能提升更容易而且更有效的方式。我想说的是,如果分片最终也必须选择的话,之前做的所有这一切优化也仍然是有价值的。 硬件。考虑一下你使用的硬件合适吗?我见过好多人在寻求分片方案,但事实上只要购买其十分之一的硬件就能解决他们的问题,并保证在未来多年有效。如果你使用的数据库比较大,请确保你有大量内存和高性能闪存。在许多情况下,它几乎像变魔术一样可以极大地提升你的系统。 MySQL版本和配置。建议使用最新的MySQL版本。我指的是最新的GA版本(本文发布时最新版本是MySQL 5.6)。Percona Server是免费的,它通常可以为需要的负载提供额外的性能提升。同样也推荐采用最新版本的操作系统,尤其是如果你使用的是最新的硬件时更需如此。最后,确保MySQL配置合适。MySQL配置好坏会导致其性能的天壤之别,性能差距可能会达到十倍甚至更多。 模式与查询。相同的应用逻辑可以由多重模式和查询来表达。我见过有许多类似的应用采用不同的方法来实现,采用优化方法和性能糟糕的方法(确实应用于生产环境了)其性能差异可能达到一百倍甚至更多。许多修改可能会调整现有结构模式,比如对索引结构的微小调整。然而,如果你的结构不能很好适合你的应用需求,那么你需要的可能是重新设计。因此,尽早开始考虑问题是很有必要的。 何时考虑分片 那么我们什么时候可以开始考虑分片呢?一般来讲,如果以上列举的方法都不能令你获得满意的性能,那么就是时候考虑分片了。分片确实有使用低成本硬件或者更廉价的云实例获得潜在性能的优势。 当今的大部分开发者们都在使用敏捷开发方法,有一种通用的说法叫“架构跑道”,它说明了应用基于当前架构可以发展多远。如果你已经使用复制获得了成功,那么再使用分片可能是一种糟糕的选择,因为它会强迫开发人员处理分片和异步复制的复杂性。然而,尽管你已经使用了分片,复制通常仍然会用于获得更高的可用性,但是这种情况下就不只是未来扩展读能力了。 如果你已经确信到了必须做分片的地步,那么下面这些问题你可以自查一下,都是关于如何实施分片策略的。 分片层次:我们应该在哪个层次上做分片呢?分片并不是必须在数据库层面上做的。许多应用(尤其是SaaS)经常在更高层次上做分片,可以部署完整应用堆的多份副本实现完全独立的可用性、性能、安全等等。在许多大型扩展应用中你会看到许多完整的副本,每份副本都有其各自的分片MySQL环境。 分片关键:我们如何进行分片?在许多情况下,选择的方案取决于你是否对用户账号或者你的组织做了认证,但是也有一些情况下并不是那么明显。在选择分片方案的时候,你需要考虑两件事:1)要让尽可能多的数据访问点安排在一起,因为跨分片访问代价很昂贵(而且前提是支持的情况下);2)确保要做的分片方案不会产生新的分片,也就是说新的分片不能太大以至于不能处理相关数据规模或者访问量。例如,按国家分片就不是一个好主意,因为处理比利时的访问量和处理美国或者中国的访问量绝对不是等同的,后者要更多的资源。 模式或者实例共享:你做分片的粒度是什么呢?一般的选择是MySQL实例或者数据库(模式)。我喜欢对数据库分片的方式,因为它不会限制每个物理节点只能有一个MySQL实例。这种方式不必运行太多MySQL实例,但是如果应用在这种情况下运行更好,你可以运行更多实例。 分片单元:如果你按每个独立的MySQL服务器做分片,你很快会遇到高可用性的问题。如果你有一百台MySQL服务器,相比于只有一台的情况,发生故障的概率大概达到一百倍。因此确保实现高可用性的解决方案就成为了关键。处理针对MySQL服务器节点做分片,我们通常可以按复制集群节点做分片(比如一台作为MySQL主节点,另一台或多台作为复制服务器或者PXC,即Percona XtraDB集群)。 分片技术:你计划采用什么技术帮助实现分片呢?在MySQL的世界中,没有通用的分片技术适合于所有人使用。大部分大型web站点都根据他们自己的分片需求实现一定的定制,其中一些已经把它们的解决方案发布为开源项目。Vitess就是一个例子,它是由谷歌公司贡献的。另一个例子是JetPants,是由Tumblr公司贡献的。推出我们自己的分片框架在一些开发人员看来貌似容易,但一般都会遇到一些难以处理的实际问题,比如平衡分片、更大规模下的再分片等。有许多专门用途的技术可以帮助实现分片,它们可能与你的团队现在管理分片的方式不同。 分片技术 这里列出了一些技术你可以参考。 MySQL Fabric:这是Oracle公司的MySQL团队开发的分片技术。MySQL Fabric是GA版本,但是目前它的功能还相当有限,尤其是在支持多分片查询方面。不过,如果再多经过一段时间,它有潜力成为MySQL的标准分片技术。 Tesora:Tesora为MySQL分片技术提供了基于代理的解决方案,前段时间它已开放源代码。如果你考虑部署OpenStack,我特别推荐Tesora,因为他们在集成方面投入了很多。 ScaleArc:ScaleArc是商业数据库代理解决方案,可以实现缓存、过滤、路由和分配。它是相当成熟的解决方案了,可以处理多种数据库而不只是MySQL。 ScaleBase:ScaleBase是专门为MySQL和云计算设计的一种分配解决方案,与MySQL类似,运营在代理层面。 在MySQL领域还有许多技术可以在无需分配的情况下扩展你的应用。不过,如果你打算成为下一个“Facebook”,那你是得考虑分片了。也有许多技术可以帮助你尽可能无痛地实现分片。以大规模数据库为基础的大型应用总会带来复杂度,针对这种应用做开发和管理是更复杂的是。付出才会成功。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
TechTarget中国
查看更多评论
敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。
时隔一个月,数据库市场经过一轮“洗牌”,旧的市场格局是否会被打破,曾经占巨大市场份额的企业是否可能失去优势?
2016年下半年,数据库排行榜的前二十名似乎都“固守阵地”,在排名上没有太大的变动。随着2017年的悄然而至,数据库的排名情况是否会有新的看点?
当Alexander Culiniac和他的同事在TickTrade系统公司建立一个基于云的交易平台时,面临一些基本的约束。那就是,系统必须在云上工作良好并且经济实用。
目前,大部分数据仓库还是用数据库进行管理。数据库是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。
Microsoft&SQL&Azure&Database提供了一种在云中存储数据并从各种应用访问数据的新方法。熟悉SQL&Server的开发人员和DBA通过将他们已有的知识与Azure开发和管理的新功能相结合,应该可以迅速地掌握它的使用方法。
“高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。身为DBA的你需要了解它们都是什么以及它们的区别都有哪些,这样才能使你针对SQL Server环境做出最佳选择。
SQL&Server和Microsoft&SharePoint&Server二者通过一种复杂的关系被连接在一起,SQL&Server可以作为SharePoint&Server的后端数据存储库。有些时候管理员并没有搞清楚这二者的关系,但它的确可以帮助DBA们解决很多问题。
在本次的技术手册中,我们将提供一系列的T-SQL函数教程,其中包括字符串操作函数、集合函数、元数据函数以及系统函数等,充分理解并掌握这些知识,对DBA来说十分必要。
TechTarget
企业级IT网站群
TechTarget中国 版权所有
All Rights Reserved, Copyright
TechTarget中国 版权所有
All Rights Reserved, Copyright大数据整理:囊括分片、存储方法、扩展等多个方面
发表于 10:14|
来源个人博客|
作者Krishna
摘要:基于业务类型的不同,企业往往需求使用不同的技术堆栈来处理,那么在眼花缭乱的工具之中,机构又该如何选择适合业务的架构,下面一起来看Krishna的整理。
【编者按】从OLTP及OLAP到数据分片,再到扩展性及相关NoSQL盘点,Krishna在其个人博客上分享了一篇全面的大数据科普文,其中包括众多有益的链接。Krishna本身精通Java、Scala等多门语言,拥有多年的互联网开发经验。他认为,对比昂贵及很容易达到瓶颈的纵向扩展,廉价的无共享及集群架构显然更适合当下的大数据处理。以下为译文:
CSDN推荐:欢迎免费订阅《》获取更多Hadoop技术文献、大数据技术分析、企业实战经验,生态圈发展趋势。
OLTP和OLAP
1. OLTP:指的是联机事务处理,面向事务(插入、 更新、 删除和获取)的处理系统,包含了一系列的应用程序。大多数 OLTP
应用程序要更快些,因为数据库是用
设计的。OLTP 系统支持垂直扩展。
2. OLAP:指的是联机分析处理,用于业务分析、数据仓储之类的事务。数据处理很慢,因为它使用户以交互方式从多个数据源对多维数据进行分析。在
OLAP 应用程序中使用的数据库架构是
,OLAP 系统是横向扩展。
数据库体系结构的传统方式实现垂直扩展,意味着将表拆分为多列,并让他们分别在物理或逻辑上分组(树状结构),这将导致数据增长时出现性能问题。每当我们遇到性能问题,我们都需要分别增加内存、
CPU 和磁盘空间。
为了消除上述问题,数据分片或无共享概念取代纵向扩展,使用横向扩展用主从结构对数据库进行分片,然后传播给大量的可垂直扩展的服务器。更多详情可传送此
:大规模并行处理系统指的是使用大量的处理器(或单独的计算机)并行执行一套协调计算。MPP 也称为是集群计算或上文讨论过的无共享架构。
关于MPP 的案例有TeraData和
横向和纵向扩展
横向扩展是指通过将更多的机器加入到你的资源池中实现扩展,垂直扩展是指通过向现有的机器中增加更多的计算能力(CPU、 RAM)实现扩展。
在数据库领域,横向扩展通常基于数据分割,即每个节点只包含的部分数据,在垂直扩展中,数据寄存在单个节点上并通过多个核心扩展,即分散那台机器上CPU和RAM资源的之间的负载。
通过横向扩展,通过向现有池中添加更多的机器实现动态扩展通常是很容易的——垂直扩展往往局限于一台机器的性能。以下是垂直扩展和水平扩展之间的差异:
2. Greenplum:Greenplum Database是基于PostgreSQL开源技术的大规模并行处理(MPP)数据库服务器。MPP(也称为无共享结构)指的是带有两个或多个处理器联合执行一个操作的系统——每个处理器有自己的内存、操作系统和磁盘。相关链接:
3. Hbase:HBase 是 Hadoop 数据库。它是分布式的、可扩展的、大数据存储。它用来提供对大型数据库实时读取和写入的访问,使用集群(主从)体系结构来存储/检索数据。
Hadoop 是Apache软件基金会开发的用来存储大量数据开源软件。
MapReduce 用于集群(主从)上大型数据集的分布式处理。MapReduce负责任务调度、 任务监测以及重新执行一些失败的任务。Map/Reduce的首要目标是将输入的数据集分成独立的数据块并将发送到该集群。MapReduce将映射的输出排序,然后被输入到规约任务中。通常情况下,作业的输入和输出都存储在文件系统中。
Hadoop分布式文件系统((HDFS)) 的主要目标是持续地存储数据,即使在出现故障的情况下。HDFS 使用主从结构,其中一个设备(主设备)控制一个或多个其他设备
(从设备)。HDFS 集群包括实际上包含文件系统的一个或多个从设备,和管理文件系统命名空间并规定了对文件访问的主服务器。
相关链接:
相关补充问题
1.&GreenPlum 实现MPP了吗? GreenPlum 使用 Hadoop 文件系统吗?
GreenPlum vs.MPP: GreenPlum 服从 MPP(大规模并行处理) 架构。该架构在这里以使用案例的形式讨论。
GreenPlum vs. Hadoop:GreenPlum 确实可以内部使用 Hadoop。使用案例讨论在此链接中的详细的讨论了。
2. 不同的存储方法有哪些?对它们进行比较。
数据存储方法:基于行的存储、基于列的存储,详细区别请传送
NoSQL: 是描述在此链接中的详细信息。它有
数据库体积
数据结构化或存储在行中。
在事务处理、交互式事务的应用程序中使用。
稳健的、 经验证的技术来捕获中途事务。
扩展性和巨大的数据查询处理时间。
Sybase、Oracle、MySQL、DB2
Sybase、Oracle、MySQL、DB2
数据垂直分割并存储在列中。
历史数据分析、 数据仓库和商务智能。
更快地对大型数据查询 (专门特设查询)。
不适合事务、 导入导出泄露 & 庞大计算量的资源利用率。
几GB到50 TB
Info Bright、Asterdata、Vertica、Sybase IQ、Paraccel
非关系型数据库键值存储
数据以一些持久性的备份存储在内存中。
用于在缓存中存储在应用程序中经常请求的数据。
可扩展的、 更快地检索数据,支持非结构化和部分结构化的数据。
所有的数据加载到内存,不支持复杂的查询。
几 GB到几TB
Amazon S3、MemCached、Redis、Voldemort
非关系型数据库文档存储
非结构化或半结构化数据和一些 SQL 查询功能的持久性存储.
没有RDBMS 中定义的列,需要更高的性能和更好的可扩展性Web
应用程序或任何应用程序。
具有可扩展持久性存储和比键值存储更好的查询支持。
缺乏完善的查询功能。
几个TB到PB
MongoDB、CouchDB、SimpleDB
非关系型数据库列存储
非常大的数据存储,支持MapReduce。
适用于金融和网络分析的实时数据。
大数据的高吞吐率,支持分片,随机读写访问。
复杂的查询,API的可用性,响应时间。
几个TB到PB
HBase、Big Table、Cassandra
原文链接:
(编译/毛梦琪 责编/仲浩)
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章《全国计算机等级考试四级教程—数据库工程师》第一章引 论1、 数据库技术产生于 20 世纪 60 年代,是信息系统的核心技术和重要基础; 2、 计算机科学与技术学科划分为四个专业方向:计算机科学(CS) ;计算机工程(CE) ;软件工程(SE) ; 信息技术(IT) 。1.1 基本概念
1.1.1 信息与数据 1、 信息、物质、能量是组成客观世界并促进社会发展的三大基本要素; 2、 信息(Information)--是客观世界事物的存在方式和运动状态的反映,是对事物之间相互联系、相 互作用的描述。信息具有可感知、可存储、可加工、可传递和可再生的自然属性。 3、 数据(Data)--是描述现实世界事物的符号记录,是用物理符号记录下来的可以识别的信息。不同的 物理符号体现出数据的不同表现形式。 4、 信息与数据间存在固有联系,数据是信息的符号表示,或称为载体。信息则是数据的语义解释,是数 据的内涵,信息以数据的形式表现出来,并为人们理解和接受。 5、 数据处理(Data Processing)--是指对数据进行分类、收集、组织、存储,进而从已数据出发,抽 取或推导出新的数据,这些数据表示了新的信息。 6、 数据管理(Data Management)--是指对数据的分类、收集、组织、编码、存储、检索和维护,是数 据处理业务的重要环节。 7、 数据处理与数据管理的区别在于,数据处理除了具有数据管理功能外,还可通过数据管理得到的数据 进一步深加工,从中获取新的数据和信息。 1.1.2 数据库系统 1、 数据库(DB,DataBase)--是长期存储在计算机内有组织的、大量的、共享的数据集合; 2、 数据库管理系统(DBMS,Database Management System)--是指在计算机系统中,位于用户与操作系 统之间的数据管理系统软件,是数据库系统的核心。 3、 (广义的)数据库系统(DBS,DataBase System)--是指在计算机系统中引入数据库后的软硬件系统 构成,DBS 一般分成三个层次: (1)计算机硬件平台; (2)系统软件和应用软件; (3)用户;在不引 起混淆和歧义的情况下,数据库系统简称为数据库。 4、 (狭义的)数据库系统—是由数据库和数据库管理系统组成的软件系统,主要为用户提供数据存储和 查询、插入、修改、删除、更 8 有新等数据管理功能。 5、 数据库应用系统(DBAS,DataBase Application System)—是由数据库、数据库管理系统、数据库 应用程序组成的软件系统,它面向具体应用领域,提供了更为复杂的数据处理功能。 6、 数据库技术—是研究数据库的结构、存储、设计、管理和使用的一门计算机应用学科。 7、 数据库技术与其它计算机科学有密切关系: (1) 数据库技术以文件系统为基础发展而来,DBMS 需要操作系统的支持,数据库以文件形式存储 在外部存储上的; (2) 数据库与数据结构的关系很密切,数据库技术不仅用到数据结构中的链表、树、图等知识, 各种数据模型本身就属于复杂数据结构; (3) 主流的关系数据库系统,其理论基础是关系数据模型,而该模型是在离散数学集合论中“关 系”这一基本概念上发展起来的; (4) 当用户访问数据库, DBMS 对用户提交的查询操作类似于, 计算机编译系统对程序的编译过程; (5) 开发一些大型的 DBS 或 DBMS 的过程,要遵循软件工程的开发模式。1.2 数据模型1.2.1 数据模型概念 1、数据模型(Data Model)--对现实世界的特征抽象。是数据库系统的形式框架,是用来描述数据的一 组概念和定义,包括描述数据、数据联系、数据操作、数据语义以及数据一致性的概念工具; 2、数据模型应满足 3 个条件: (1)能够比较真实地模拟现实世界; (2)容易为人们所理解; (3)便于在 计算机上实现。 3、 数据模型的组成: (1) 数据结构:用于描述系统的静态特征,从语法角度表述了客观世界中数据对象本身的结构和 数据对象之间的关联关系,是刻画一个数据模型性质最重要的方面。在数据库系统中,通常 按照数据结构的类型来区分、命名各种数模,如层次、网状、关系数模。 (2) 数据操作:用于描述系统的动态特征,是一组对数据库中各种数据对象允许执行的操作和操 作规则组成的集合。数据操作可以是检索、插入等,数模必须定义这些操作的确切含义、操 作符号、操作规则以及实现操作的数据库语言。 (3) 数据完整性约束:是一组完整性规则的集合,它定义了数模必须遵守的语义约束,也规定了 数据库中数据内部及数据之间联系所必须满足的语义约束。它限定了数据库的状态以及状态 的变化,以便维护数据的正确性、有效性。 1.2.2 数据模型分类 1、 用数据模型这一概念来描述数据库的结构和语义,通过现实世界—信息世界—机器世界(建模过程) 的抽象转换过程构建数据库,并根据模型所定义的规范去管理和使用数据。 2、 建模过程: (1)将现实世界的数据对象抽象为信息世界中的某一信息结构; (2)再将信息结构转换为 机器世界中某一具体 DBMS 支持的数据模型,并存储于计算机中。 3、 数据模型分类: (由上到下) (1) 概念数据模型(概念模型) :按用户的观点对数据和信息进行建模,是现实世界到信息世界的 第一层抽象,强调其语义表达功能,易于用户理解,是用户与设计人员交流的语言,主要用 于数据库设计。最常用的是实体—联系模型。 (2) 数据结构模型 (表示型/实现型) 是机器世界中与具体 DBMS 相关的数据模型, : 包括关系模型、 网状模型和层次模型 (3) 物理数据模型:属底层数据模型,描述数据的实际存储方式。1.3 数据视图与模式结构1.3.1 数据视图与数据抽象 1、 数据视图:指从某个角度看到的客观世界数据对象的特征,是对数据对象某一方面特征的描述。 2、 数据抽象:是一种数据描述和数据库设计原则,是指专注于数据对象的某方面特征,而忽略其他 特征。 3、 集和值:集是指对某一类数据的结构和属性的说明,值是集的一个具体赋值; 4、 数据模式:对数据库中数据某方面结构和特征的描述,它仅涉及集的描述,不涉及具体的值。 1.3.2 三级模式结构(从数据库管理系统角度) 1、 数据库三级模式结构—外部级、概念级和内部级,分别定义了外模式、模式和内模式,用于从不 同角度描述数据库结构。 2、 模式: (1) 也称逻辑模式、概念模式; (2) 对数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图; (3) 模式不仅定义了数据的逻辑结构,还定义了数据之间的联系、与数据的关的安全性和完 整性要求; (4) 一个数据库只有一个模式,建立在某种数据结构模型基础上。 3、 外模式: (1) 也称子模式、用户模式、用户视图; (2) 是对数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述。 (3) 一个数据库可以有多个外模式,每个外模式描述了某个特定用户所使用的局部数据的逻 辑结构和特征,是与某一应用有关的数据的逻辑表示。 (4) 外模式还是保证数据安全的有力措施,每个用户只能看见和访问所对应的外模式中的数 据,其它数据对他是不可见的。 4、 内模式: (1) 也称物理模式、存储模式; (2) 是对数据库中数据的物理结构和存储方式的描述,代表了数据在数据库内部的表示方式 和物理组织结构; 1.3.3 二级映象与数据独立性 1、 外模式/模式映象: (1) 定义了数据库中不同用户的外模式与数据库逻辑模式之间的对应关系; (2) 可有多个外模式/模式映象,对于每个外模式,需要一个外模式/模式映象来定义该外模 式与模式之间的对应关系; (3) 当模式发生变化时,只需调整外模式/模式间的映象关系,而外模式无需修改,保证了数 据与应用程序的逻辑独立性,称为数据的逻辑独立性。 2、 模式/内模式映象: (1) 定义了数据库中数据全局逻辑结构,与这些数据在系统中的物理存储组织结构之间的对 应关系。 (2) 模式/内模式映象是唯一的; (3) 当内模式发生变化时,只需调整模式/内模式映象关系,而模式无需修改,保证了数据库 中的数据与应用程序间的物理独立性,称为数据的物理独立性。1.4 数据库系统体系结构1、 数据库系统体系结构(从用户角度) :是指数据库系统的组成构件、各构件的功能及各构件间的 协同工作方式; 2、 分类: (1) 集中式:全部数据和数据管理功能均集中在一台计算机上的数据库系统;包括单用户和 主从式两种,单用户 DBS 是指系统由一个用户独占,不同机器间不能共享数据;主从式 DBS 是指一个主机带多个分时多用户的 DBS; (2) 分布式:数据库中的数据在逻辑上是一个整体,但在物理上却可以分布在网络中不同数 据管理节点上; (3) 客户/服务器:将 DBMS 和数据库应用分开,网络中某些节点上的计算机专门执行 DBMS 功能,负责数据管理服务,称为数据库服务器;其他节点的计算机上安装 DBMS 的外围应 用开发工具,支持用户的应用,主要负责数据表示服务,称为客户端; (4) 并行式:硬件平台是并行计算机系统,使用多个 CPU 和多个磁盘进行并行数据处理和磁 盘访问操作,以提高执行速度; (5) WEB 式: 由通过互联网连接起来的客户端、WEB 服务器、数据库服务器组成。1.5 数据库管理系统1.5.1 数据库管理系统的功能 (1) 数据定义功能:DBMS 提供了数据定义语言(DDL) ,用户利用 DDL 定义数据库对象的三级 模式结构,描述数据库的结构特征。 (2) 数据操纵功能:DBMS 提供数据操纵语言(DML) ,用户利用 DML 对数据进行查询、插入、 删除或更新; (3) 数据库运行管理和控制功能 (4) 数据库的建立和维护功能 1.5.2 数据库系统的全局结构(图) 1、 DBS 可分为用户、人机交互界面、DBMS 和磁盘四个层次; 2、 用户可分为四类:数据库管理员 DBA;专业用户;应用程序员;终端用户; 3、 DBMS 可分为两部份: (1) 查询处理器:面向用户查询请求;包括以下几个功能模块:DML 编译器、嵌入式 DML 的 预编译器、DDL 编译器、查询执行引擎; (2) 存储管理器:面向数据存储访问,包括以下几个功能模块:权限和完整性管理器、事务 管理器、文件管理器、缓沖区管理器; 4、 磁盘存储的类型: (1) 以数据库文件方式存储的应用数据; (2) 数据字典; (3) 为提高查询速度而设置的数据库引擎; (4) DMS 运行时的统计分析数据; (5) 日志信息。1.6 数据库技术的发展和应用1、 第一代 DBS:60 年代末 70 年代初,层次型和网状型 DBS; 2、 第二代 DBS:70 年代后期,关系数据库系统; 3、 新型 DBS:80 年代,分布式数据库系统;90 年代,面向对象数据库系统、网络数据库系统 第二章 数据库应用系统(DBAS)生命周期2.1 数据库应用系统生命周期2.1.1 软件工程与软件开发方法 1、 软件工程:指导计算机软件开发和维护的工程科学,它采用工程化的概念、原理、技术和方法, 以及正确的项目管理技术,来开发和维护软件;它将系统化、规范化、定量化方法应用于软件的 开发、操作和维护,也就是将工程化应用于软件生产; 2、 软件工程的目标: 在给定成本、 进度的前提下, 开发出满足用户需求并具有下述特征的软件产品: 可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性 和可互操作性。 3、 软件生命周期: (以及开发周期)指软件产品从考虑其概念开始,到该不再使用的整个时期(产 品交付使用的整个时期) ,包括概念阶段、需求阶段、设计阶段、实现阶段、测试阶段、安装部 署及交付阶段; 4、 软件项目管理:为了能使软件开发按预定的质量、进度和成本进行,而对成本、质量、进度、人 员、风险等进行分析和有效管理的一系列活动。 5、 软件工程以关注软件质量为特征,由方法、工具和过程三部分组成; 6、 软件过程模型(软件开发模型) :是对软件过程的一种抽象表示,表示了软件过程的整体框架和 软件开发活动各阶段间的关系,常见的有:瀑布模型、快速原形模型、增量模型和螺旋模型。 2.1.2 DBAS(面向某个特定领域,实现特定功能的计算机软件、硬件的集成体)软件组成 1、 数据库应用软件在内部可看作由一系列软件模块/子系统组成,这些模块/子系统可分成两类: (1) 与数据访问有关的数据库事务模块: 利用 DBMS 提供的数据库管理功能, 以数据库事务方 式直接对数据库中的各类应用数据进行操作,模块粒度较小; (2) 与数据访问无直接关联的应用模块:在许多与数据处理有关的应用系统中,对数据库的 访问只是整体中的一部分,其他功能则与数据库访问无直接关系,这部分模块粒度可以 比较大。 2、 DBAS 设计开发的硬件方面:主要涉及根据系统的功能、性能、存储等需求选择和配置合适的计 算机硬件平台,并与开发好的 DBAS 软件系统进行集成,组成完整的数据库应用系统; 2.1.3 DBAS 生命周期模型 1、 数据库应用系统的生命周期模型: (图,p17) (1) 参照软件开发瀑布模型的原理,DBAS 的生命周期由项目规划、需求分析、系统设计、实 现和部署、运行管理与维护等 5 个基本活动组成; (2) 将快速原形模型和增量模型的开发思路引入 DBAS 生命周期模型, 允许渐进、 迭代地开发 DBAS; (3) 根据 DBAS 的软件组成和各自功能,细化 DBAS 需求分析和设计阶段,引入了数据组织与 存储设计、数据访问与处理设计、应用设计三条设计主线,分别用于设计 DBAS 中的数据 库、数据库事务和应用程序; (4) 将 DBAS 设计阶段细分为概念设计、逻辑设计、物理设计三个步骤,每一步的设计内容又 涵盖了三条设计主线。2.2 规划与分析(图 p18)2.2.1 系统规划与定义 1、 定义:系统规划与分析是面向将要开发的 DBAS,通过了解用户实际需求,明确该系统需要实现 的目标和任务,并从数据管理和数据处理的角度,确定系统中数据库软件的功能、性能范围; 2、 系统规划与定义包括: (1) 任务陈述:描述所要开发的 DBAS 的总体目标; (2) 确定任务目标; (3) 确定系统范围和边界; (4) 确定用户视图; 2.2.2 可行性分析 1、 可行性分析包括以下四方面: (1) 经济可行性:对项目进行成本效益分析;DBAS 的成本主要包括:A、软硬件购置费用;B、 系统开发费用;C、系统安装、运行、维护费用。 (2) 技术可行性:是根据用户提出的系统功能、性能及实现系统的各项约束条件,对系统软 件、硬件、技术方案作出评估和选择建议; A、 硬件可行性研究是分析 DBAS 的硬件平台环境和设置; B、 软件可行性研究包括:对可用的 DBMS 和操作系统的选型评估,对中间件和开发环境的 选型建议,对 DBAS 开发模式和编程语言的建议; C、 技术方案的选择是根据系统技术需求, 提出 DBAS 可能采用的合理技术方案和关键技术; (3) 操作可行性:是论证是否具备 DBAS 开发所需的各类人员资源、软件资源、硬件资源和工 作环境等,以及为支持 DBAS 开发如何去改进加强这几方面资源。 (4) 开发方案选择:目的是提出并评价实现系统的各种开发方案,从中选出一种适用于 DBAS 软件的开发方案; 2.2.3 项目规划 1、 项目规划是项目管理者对资源、成本和进度做出合理估算,并在此基础上制定切实可行的 DBAS 项目开发计划。 2、 项目规划包括以下内容: (1) 确定项目的目标和范围; (2) 根据 DBAS 软件开发模型,分解和定义整个项目包括的工作活动和任务; (3) 估算完成该项目的规模和所需各种资源; (4) 制定合理的 DBAS 项目计划 3、项目规划的结果应形成数据库应用系统项目计划文档,即项目计划书。2.3 需求分析1、 数据库应用系统需求是指用户对 DBAS 在功能、性能、行为、设计约束等方面的期望和要求; 2、 DBAS 需求分析是在已经明确的 DBAS 系统范围基础上,通过对应用问题的理解和分析,采用合适 的工具和符号,系统地描述 DBAS 的功能特征、性能特征和约束,并形成需求规范说明文档; 3、 需求分析过程由需求获取、需求分析、需求描述和规范说明、需求验证等组成; 4、 DBAS 的需求分析包括: (1) 数据需求分析; (2) 数据处理需求分析; (3) 务需求分析; (4) 分析数据库系统在性能、存储、安全、备份与恢复等方面的要求; 2.3.1 数据与数据处理需求分析(承上分别介绍) 1、 数据需求分析:是从对数据组织与存储的设计角度,辨识应用领域所管理的各类数据项和数据结 构,与数据处理需求分析结果一起,组成数据字典;包括 5 个部分(Def:是一种用户可以访问的 记录数据库和应用程序元数据的目录,它详细描述系统中的全部数据) 2、 数据处理需求分析:是从数据访问和处理的角度,明确对各类数据项所需进行的数据访问操作, 分析结果可表示为数据流图或事务规范; (DFD) 3、 事务规范包括: (1)事务名称; (2)事务描述; (3)事务所访问的数据项; (4)事务用户; 2.3.2 业务规则需求分析 1、业务规则需求分析:是从 DBAS 高层目标和整体功能出发,分析系统或系统中一些大粒度子系统 应具有的业务类型和功能,明确用户或外部系统与 DBAS 的交互模式; 2.3.3 性能(能做到什么程度)需求分析 1、 DBAS 的性能指标: (1) 数据操作响应时间(或数据访问响应时间) :从提交请求到返回结果的时间; (2) 系统吞吐量:指系统在单位时间内所完成的事务或查询的数量,单位为 TPS; (TPC 是指 事务处理性能委员会) (3) 允许并发访问的最大用户数:在保证响应时间的前提下,系统最多允许多少用户同时访 问数据库; (4) 每 TPS 代价值,用于衡量系统性价比的指标 2、 影响 DBAS 性能的因素: (1) 系统硬件资源; (2) 网络通信设备性能; (3) 操作系统环境; (4) 数据库的逻辑设计和物理设计质量,数据库配置参数; (5) DBAS 的配置和性能; (6) 数据库应用程序自身。 2.3.4 其它需求分析 1、 存储需求分析:是指估计 DBAS 系统需要的数据存储量,包括: (1)初始数据库大小; (2)数据 库增长速度;存储总量估算可采用:根据数据字典中每个数据项的结构描述信息,估计每个数据 项的容量,将所有数据项的容量累加; 2、 安全性需求分析: (1) DBAS 系统应达到的安全控制级别; (2) 各类用户的数据视图和视图访问权限; (3) DBAS 应有的口令保护机制或其它安全认证机制,用以控制用户登录数据库系统。 3、 备份和恢复需求分析: (1) DBAS 运行过程中备份数据库的时间和备份周期; (2) 所需备份的数据是全部数据库数据,还是一部分; (3) 备份方式是采用完全备份还是采用差异备份。2.4 系统设计2.4.1 概念设计(DB 概念模型设计和总体设计) 1、 数据库概念模型设计:是根据数据需求分析阶段得到的需求结果,分析辨识需要组织存储在数据 库中的各类应用领域数据对象的特征及其相互之间关联关系,并采用概念数据模型表示出来,得 到独立于具体 DBMS 的数据库概念模型; 2、 ER 方法: (1)选择局部应用; (2)分别设计各个局部 ER 图; (3)局部 ER 图合并; 3、 系统总体设计: (1) 确定 DBAS 体系结构; (2) 系统硬件平台和操作系统、数据库管理系统等系统软件的选型和配置; (3) 应用软件结构设计(软件程序概要设计Ⅰ) (4) 对需求分析阶段识别出的业务规则进行初步设计,细化业务规则流程,明确采用的关键 技术和算法; (5) 对系统采用的关键技术进行方案选型和初步设计。 2.4.2 逻辑设计 1、 数据库逻辑结构设计: 指从数据库的概念模型出发, 设计表示为逻辑模式的数据库逻辑结构。 (即 从 ER 图到关系模型) (1) ER 图转换为初始关系模式; (2) 对初始关系模式进行优化; (3) 检查关系表对数据库事务的支持性; (4) 确定关系模式的完整性约束; (5) 从数据安全性和独立性出发,设计用户视图。 2、 应用程序概要设计(II)(在Ⅰ上细化) ; 3、 数据库事务概要设计; 2.4.3 物理设计 1、 数据库物理结构设计:主要指数据文件在外存上的存储结构和存取方法,它依赖于系统具体的硬 件环境、操作系统和 DBMS; (1) 数据库逻辑模式调整; (2) 选择或配置基本关系表的文件组织形式; (3) 数据分布设计; (4) 安全模式设计; (5) 确定系统配置; (6) 物理模式评估; 2、 数据库事务(相当于 VB 的事件)详细设计:根据事务流程,利用 SQL 语句、数据库访问接口, 采用高级程序设计语言或 DBMS 提供的事务实现机制,设计数据库事务。 3、 应用程序详细设计:2.5 实现与部署 1、 建立数据库结构; 2、 数据加载; 3、 事务和应用程序的编码及测试; 4、 系统集成、测试与试运行; 5、 系统部署;2.6 运行管理与维护2.6.1 日常维护 (1) 数据库的备份与恢复 (2) 完整性维护 (3) 安全性维护 (4) 存储空间管理 (5) 并发控制及死锁处理 2.6.2 系统性能监控和分析 1、 统计数据可以通过两种途径收集: (1) 由 DBMS 本身自动收集和存储统计数据 (2) 通过监控系统得到 2.6.3 系统性能优化调整 1、 糸统性能优化的手段有:数据查询调整与优化、索引调整、数据库摸式调整、DBMS 和操作系统 参数调整等。 2、 模式调整主要涉及逻辑模式调整,可以从下考虑: (1) 已达到第三范式的基本表,不要进一步规范化为 BCNF; (2) 在分布式数据库中,对一个基本表中某些频繁被访问的数据,可以按水平分区或垂直分 区方式拆分基本表。 2.6.4 系统升级 1、 改进应用桯序; 2、 数据库重组; 3、 DBMS 和 OS 版本升级第 3 章 需求分析及功能建模方法3.1 需求分析概述3.1.1 需求分析概念 1、 所谓需求分折:就是对待开发的系统要做什么,完成什么功能的全面描述。 2、 需求分析的工作:通过对需求的调查、了解、观察和分析,通过对原始数据的收集、分类和抽象, 并采用有效的技术、工具,对原始资料进行加工整理,描述开发目标、实现的功能及其相互关系 等活动的集合; 3、 需求的定义:客户对一个待开发的系统在实现目标、完成功能、应达到的性能、安全性、可靠性 等方面的期望和要求的集合; 4、 需求获取的困难: (1) 软件功能复杂; (2) 需求的可变性; 5、 需求分析阶段的主要任务:分析当前的业务流程,包括体系结构,各职能部门完成的主要任务、 关系及其交流的信息。 6、 需求分析的结果通常以模型等建模工具和方法描述系统的信息流、 功能结构及完成各功能需要的 数据。 7、 功能模型和软件需求规格说明书是软件开发的依据,将指导后续的开发工作。 8、 需求分析工作是系统分析员与用户不断交互的过程中完成的。 3.1.2 系统分析员的职能 1、 系统分析员的主要要任务: 是确定应用信息系统及软件产品应该达到的各项功能性要求和非功能 性要求,即用户要做什么。 2、 系统分析员应该具备的素质: (1) 获取需求的能力; (2) 管理及沟通能力; (3) 技术素养; 3.1.3 需求获取的方法 常用的几种获取需求的方法: (1)面谈; (2)实地观察; (3)问卷调查; (4)查阅资源; 3.1.4 需求分析过程 1、 标识问题: (1) 需求分析的第一步,通过对问题的识别和标识获得所求解问题及其运行环境的理解; (2) 标识问题从现行系统的业务流程做起,理解现行系统的业务流程; (3) 在标识理解需求的同时,还要注意确定系统的人机界面; 2、建立需求模型: (1) 模型是对现实原形所作的一种抽象,其本质是只关心与研究内容有关的因素,而忽略无 关的因素,其目的是把复杂的事物变得简单,便于认识和分析; (2) 目前常用的模型方法主要有 DFD 数据流图和 IDEFO,都属于结构化分析方法,其特征是 抽象和分解; (3) 首先对应用领域进行全面的分析,发现并找出同类事物的本质,用抽象方法把这类事物 的非主要方面剔除,把握住事物的内部规律或本质,就可以找到解决办法;然后采用自 上而下逐步求精的方法对复杂的问题进行分解; (4) 结构化分析及建模方法的主要优点: (A) 不过早陷入具体的细节; (B) 从整体或宏观入手分析问题; (C) 通过图形化的模型对象直观地表示系统要做什么,完成什么功能; (D) 图形化建模方法方便系统分析员理解和描述系统; (E) 模型对象不涉及太多的技术术语,便于用户理解; 3、描述需求: (1) 需求描述的目标:对软件项目功能性和非功能性的需求全面描述; (2) 功能性需求:指需要计算机实际解决的问题或实现的具体功能,明确描述系统必须做什 么,实现什么功能以及输入输出等; (3) 非功能性需求:软件项目对实际运行环境的要求; (4) 需求描述主要由需求模型和需求说明书组成,说明书侧重文字说明,内容如下:需求概 述;功能需求;信息需求;性能需求;环境需求;其他需求; (5) 在对需求进行分析过程中,系统分析员要经常考虑的问题: (A) 描述的需求是完全的吗? (B) 需求描述是正确的和一致的吗? (C) 描述的这些需求是可行的、实际可操作的吗? (D) 描述中的每一条需求都是客户需要的吗? 4、确认需求: 1、 评审委员会审核下列内容:功能需求;数据需求;性能;数据管理;其他需求。3.2 DFD 建模方法3.2.1 DFD 方法的基本对象 1、 数据流:具有名字且有流向的数据,用标有名字的箭头表示。 2、 处理:表示对数据的加工和变换,在图中用矩形框表示。 3、 数据存储:表示用数据库形式存储的数据,对其存取分别以指向或离开数据存储的箭头表示; 4、 数据源及数据终点:表示当前系统的数据来源和去向,其图形符号以平行四边形表示。 3.2.2 开发 DFD 图 1、 DFD 图采用自顶而下逐步细化的结构化分析方法表示目标系统; 2、 DFD 方法应以软件项目的功能为中心进行抽象和分解,以数据流的变换来分析数据对企业中各类 业务活动的影响; 3.2.3 建模案例(p43) ; 3.2.4 数据字典 1、 数据字典包括以下说明信息: (1) 源点及终点词条描述; (2) 数据流词条描述; (3) 数据存储; (4) 处理描述; (5) 数据元素词条描述。3.3 IDEF0 建模方法3.3.1 概述 1、 IDEF0 的基本思想是结构化分析方法, 强调自顶而下有控制地逐步地展开细节, 全面地描述系统, 且通过建模来理解一个系统。一个模型由图形文字说明、词汇表及相互的交叉引用表组成。 2、 IDEF 方法的优点:具有模型元素单一、语义丰富、更易于从全局角度分析考察问题,模型容易 理解。 3.3.2 IDEF0 方法 1、基本元素 (1) 矩形:代表活动,活动名称标在矩形内,活动编号按要求标在矩形框右下角指定位置; (2) 箭头:左边的输入箭头代表完成活动需要的数据、上方的控制箭头描述了影响活动的执 行的事件或约束、右边的输出箭头说明由活动产生的结果及信息、下方进入的机制箭头 表示实施该活动的物理手段或资源。 (3) 输入输出箭头描述活动是什么(what) 、控制箭头描述为何这么做(why) 、机制箭头表示 如何做(how) 。 2、IDEF0 模 (1) 一个 IDEF0 模型由一组图形组成,这些图形组成一个由父到子的层次结构图,这组图形 把一个复杂事物按自顶向下逐步细化的方式分解成一个个简单的或多个组成部分; 3、 建模规则 (1) 矩形框:用动词为矩形内活动命名,每个矩形要至少有一个控制箭头和输出箭头,可以 没有输入,但不可以同时没有输入和控制。 (2) 箭头:箭头代表数据约束,而不是代表流或顺序; (3) 其他: (A) ICOM 码:只有一端与矩形相连的箭头叫边界箭头,这些箭头表示父矩形框的输入、 控制和输出。IDEF0 用专门的记号 ICOM 码来说明父子图中的箭头关系。子图中每个 边界箭头的开端分别用字母 I、C、O、M 来标明是输入、控制、输出及机制,再用一 个数字表示其在父矩形框中箭头的相对位置。 (B) 结点号:IDEF0 模型是一组有一定层次结构的图形,通常用结点号来标志图形或矩 形框在层次图中的位置; (C) 模型名:每个模型有一个名字,通常用名字代表主题,用子名字表示不同的模型。 基本名字与子名字间用“/”隔开,如 A/B/C,A 是主题、B 是模型号、C 是结点号。 3.3.3 建模过程及步骤 1、 IDEF0 建模过程及步骤: (1) 明确目的,确定范围:在建模前首先要明确目的和意图,确定问题域; (2) 建立内外关系图 A-0 图:根据系统目标、功能建立内外关系图 A-0 图,以确定整个模型 的内外关系,确定系统的边界; (3) 构造顶层图:把 A-0 图分解成 3~6 个主要部分得到 A0 图,A0 图是模型真正的顶层图; (4) 开发 IDEF0 层次结构图: A0 图中的每个矩形框进行分解, 对 就形成了基本的图形层次结 构。在分解时要列出所有的数据项和活动表,分解的次序采用以下原则: (A) 保持在同一水平上进行分解,均匀的模型深度; (B) 按困难程序进行选择; (5) 写文字说明; (6) 检查确认图形;3.4 DFD 与 IDEF0 的比较1、 DFD 与 IDEF0 共同点:都是结构化分析思想,强调自顶而下逐步求精的方法对现实世界建模,先 抓住主要的问题,形成较高层次的抽象,再由粗到细、由表及里地逐步细化,将一个大问题分解 成几个小问题,对这小问题再进行分析求解; 2、 DFD 与 IDEF0 区别: (1) DFD 图用箭头(数据流)来描述数据移动的方向、数据处理及处理之间的数据依赖关系。 IDEF0 图也用箭头代表数据流,但在 IDEF0 中不是强调流或顺序,而是强调数据约束。 (2) 从表达形式上看, 图与 IDEF0 图都是用箭头和处理表达一个企业或组织的业务流程。 DFD 但 IDEF0 图的箭头不仅能够表示数据流,还可以表示控制流和说明处理或实施方式的一 些约束; (3) 从模型元素的组成上来看,DFD 模型由 4 种元素组成,即外部顶、数据流、数据存储和 处理。而 IDEF0 模型元素的组成更加简单,只有 2 种元素组成,即箭头和活动; (4) 从模型规范上来讲,IDEFO 方法更加规范; (5) IDEF0 模型结构清楚,便于理解和沟通。第四章 数据库概念设计及数据建模4.1 数据库概念设计概述4.1.1 数据库概念设计的任务 1、 定义和描述应用领域涉及的数据范围; 2、 获取应用领域或问题域的信息模型; 3、 描述清楚数据的属性特征; 4、 描述清楚数据之间的关系; 5、 定义和描述数据的约束; 6、 说明数据的安全性要求; 7、 支持用户的各种数据处理需求; 8、 保证信息模型方便地转换成数据库的逻辑结构,同时便于用户理解。 4.1.2 概念设计过程 1、 概念设计的依据:是需求分析阶段的文档,通过对这些文档的分析理解,构造出信息模型,编写 数据库概念设计说明书,信息模型和数据库概念设计说明书是数据库逻辑设计的依据; 2、 概念设计的基本步骤: (1) 确定实体集; (2) 确定联系和联系类型; (3) 建立由信息模型表示的企业模型; (4) 确定实体集属性; (5) 对信息模型优化。 3、 概念设计的方法(自顶向下、自底向上、逐步扩张、混合策略)4.2 数据建模方法 1、 数据建模方法的共同特点是: (1) 能够真实客观地描述现实世界中的数据及数据之间的关系; (2) 组成模型的概念少,语义清楚,容易理解; (3) 不同概念的语义不重叠,概念无多义性; (4) 用图形方式描述数据,数据直观易懂,有利于数据库设计者和用户交流; (5) 这种数据模型容易转换成数据库逻辑设计阶段需要的数据结构。4.3 ER 建模方法4.3.1 基本概念 1、 实体或实例:指客观存在并可相互区分的事物,可以是一个具体的人或物,也可以是抽象的事件 或概念; 2、 实体集:表示一个现实的和抽象事物的集合,这些事物必须具有相同的属性或特征。 3、 属性:用于描述一个实体集的性质和特征; 4、 码:实体集中能惟一标识每一个实例的属性或属性组; (以及域) 5、 联系:描述现实世界中实体之间的关系。 (1)一对一联系; (2)一对多联系; (3)多对多联系 4.3.2 ER 方法语法 1、 ER 方法中用矩形框表示实体集,矩形框内写上实体集的名称; 2、 ER 模型用菱形表示联系,联系名写在菱形框内; 3、 ER 模型中实体集的属性用椭圆或圆角矩形框表示,属性名字写在其中。 补充:1、ER 建模步骤:局部(以数据字典为依据,自底而上) (确定范围,识别实体、确定关系、 定义属性)到全局。 2、全局(合并和重构)合并:消除冲突(属性,命名,结构) ;冲突:消除冗余。4.4 IDEF1X 建模方法4.4.1 IDEF1X 概述 1、 IDEF0 侧重描述系统功能,被称为功能建模方法;IDEF1X 侧重分析、抽象和概括应用领域中的数 据,称为数据建模方法; 2、 IDEF1X 方法具有丰富的语法和语义; 3、 实体集分为(1)独立标识符实体集; (2)从属标识符实体集; 4、 实体集之间的联系分为: (1)标定型联系; (2)非标定型联系; (3)分类联系; (4)不确定联系 4.4.2 IDEF1X 模型元素 1、 实体集: (1) 实体集语义:如果一个实体集的每一个实例都能被惟一地标识,而不决定于它与其他实 体的联系,那么该实体集称为独立实体集; (存在键区)否则就叫从属实体集; (2) 实体集语法:IDEF1X 用矩形框来表示独立实体集,用圆角矩形框来表示从属实体集; 2、 联系: (1) 联系语义: (A) 标定型联系:一个“确定型联系” (一对多)中,如果子女实体集中的每个实例都是 由它与双亲的联系而确定的,这个关系称为“标定型联系” (在子实体中做外键时, 在键区,反之成立) ; (B) 非标定型联系:一个“确定型联系”中,如果子女实体集中的每一个实例都能被惟 一地确认而无需了解与之相联系的双亲实体集的实例,这个问题关系叫“非标定型 联系” 。 (C) 分类联系:是两个或多个实体集之间的联系,且在这些实体集中存在一个一般实体 集,它的每一个实例都恰好与一个且仅一个分类实体集的一个实例相联系。 (D) 不确定联系: 一个非确定联系又称为多对多联系, 这种联系关联的两个实体集之间, 任一实体集的一个实例都将对应另一实体集的 0 个、1 个或多个实例。 (2) 联系的语法: (A) 标定联系语法:在 IDEF1X 图中,联系的语法用直线表示,在一个标定型联系中,子 女实体集总是一个从属实体集,用圆角矩形框表示; (B) 非标定联系语法:如果两个实体集之间有关系,并且是一个非标定联系,就用一条 虚线把它们连接起来。 (C) 分类联系语法:一般实体集的一个实例只能与分类实体集的一个实例相对应; (D) 不确定联系 m:n 的语法:不确定联系用一个两端带有实心圆的线段描述,表示多对 多的连接关系。 3、 属性 (1) 属性的语义:用来描述一类现实或抽象事物的特征或性质。一个属性的具体取值叫属性 实例,它由属性的类型和值来定义。 (2) 属性的语法 (A) 主码和非主码属性语法: 在一个实体集中属性要有惟一的名字, 属性名由名词表示, 主码属性名后加(PK)标注,被列在属性列表的顶端,并用水平线将主码和其他属 性分开。 (B) 外码语法:在外码属性后加“FK”来识别由联系继承得到的外来属性。 4.4.3 建模过程 1、第一阶段:建模规划及准备 (1) 建模目标: (A) 目标说明:回答将构造的模型完成什么功能,涉及的问题和数据范围,同时说明是 一个当前系统模型还是待建模型。 (B) 范围说明:在建模初期要给出模型覆盖的问题范围; (2) 建模计划 (A) 项目说明; (B) 收集数据; (C) 定义实体; (D) 定义联系; (E) 定义码属性; (F) 定义非码属性; (G) 确认模型; (H) 评审验收。 (3) 组织队伍:包括项目负责人、建模者、信息源、课题专家、评审委员会 2、 第二阶段:定义实体集 (1) 目标是标识和定义应用领域中的实体集,方法是分类标识原始材料中的所有名词; (2) 区别实体集名词和非实体集名词的方法,是否具有下列特征: (A) 它能够被描述或说明吗? (B) 有多少同类的实例吗? (C) 每个实例可以被标识和区分吗? 3、 第三阶段:定义联系 (1) 标识实体集之间的联系:建立联系矩阵,联系矩阵由一个二维数组表示。把实体集沿水 平和垂直两方向列出, 分析两个实体间的联系, 有联系就用 表示, “X” 不存在联系用 “null” 表示。联系只标识直接关系,不标识间接关系。 (2) 定义联系:包括表示依赖、命名联系、关于联系的说明;当实体集之间的依赖关系建立 后,就可以命名联系了。联系的名字可以动词表示。原则必须是具体的、简明的和有意 义的。 (3) 构造实体级数:实体级图的范围和数目,依赖于建模的规模和建模问题涉及的实体集数 目。 4、 第四阶段:定义健 (1) 分解不确定的联系:把实体级图中不确定的关系转换成确定的连接形式,把每一个不确 定的联系转换成为两个确定的联系; (2) 标识码属性:码属性是那些能够惟一识别实体集中每一个实例的属性; (3) 迁移主码:把一个实体集的主码复制到其他有关实体集的过程,但要遵守以下规则: (A) 在一个联系中,迁移总是从父到子或从一般实体集移向分类实体集; (B) 主码属性才能被迁移,如主码由多个属性组成,则要全部迁移; 5、 第五阶段:定义属性 (1) 标识和定义非主属性; (2) 建立属性的所有者; (3) 确认属性的定义; (4) 绘制局部数据视图; (A) 实体集的名称和编号写在矩形框外的上面; (B) 主码属性写在矩形框内水平线的上面并用“PK”标注; (C) 外码属性写在矩形框内水平线的下面并用“FK”标注; (D) 非主属性也可以写在矩形框内水平线的下面;第五章 关系数据库逻辑设计5.1 概述 5.2 基本概念5.2.1 关系模型 1、 关系模型采用一个二维表格在计算机中组织、存储、处理和管理数据。 (1) 关系名(数据库名) :由字母数字组成; (2) 属性名; (3) 关系模式和关系:描述模式描述关系的静态结构,由模式名、关系模式所包含的属性及 属性值所满足的条件组成模式定义。 (4) 元组:描述关系中的行; (5) 域:它定义关系的每个属性取值的类型; (6) 主码:能够惟一标识关系中每一个元组的属性或属性组; (7) 关系的数学定义:关系模式是建立在集合集论的基础上的,用数学的概念定义关系有; (A) 定义一:域是值的集合,同一个域中的值具有相同的数据类型; (B) 定义二:笛卡尔积的定义(相当于一张二维表) (C) 定义三:关系的定义(笛卡尔积的子集(二维表) ,域的顺序不能改) (D) 当关系引用了属性名后关系具有以下属性: [1] 不能有重复的元组; [2] 元组上下无序; [3] 按属性名引用时属性左右无序; [4] 所有属性值都是原子项(不可再分) ; (8) 总结:关系是一张二维表,表中的一行被称为一个元组,一列称为属性,由一组域值组 成。关系是元组的集合,关系中的每个元组在数学上被定义为这个关系所涉及的全部域 值中笛卡儿积的一个元素。 5.2.2 关系数据库 1、 关系数据库是按照二维表组织和存储的相互关联的关系的集合, 关系数据库模式是关系模式的集 合; 5.2.3 关系的完整性 1、 关系的完整性(完整性约束) :是对关系的某种约束规则和关系满足的定义。通常这组约束规则 用来限定和检查数据库所含实例的合法性和正确性; 2、 完整性约束分静态和动态两种,静态完整性(相当于逻辑的,真理的)约束是基于关系模式的, 主要有主码、外码约束和域约束组成;动态完整性约束(基于现实)是基于企业的业务规则的。 3、 静态完整性约束规则: (1) 主码约束:主码必须满足: (A) 惟一性:在一个关系中不存在两个元组,它们具有相同的主码值; (B) 最小性:不存在从组成主码的属性集中去掉一个属性,还仍能保持数据的惟一性; 候选码:符合主码条件,但没有被选为主码。 (2) 外码约束: (外码的定义:有两个关系 R 和 S,X 是 R 得属性组,非码;是 S 的码,则称 X 是 R 得外码)外码为空或码的值(否者查找失败) (3) 用户定义的完整性: (性别只为男和女)5.3 关系数据库设计理论5.3.1 问题的提出 究竟一个关系数据库包含哪些属性是合理的,如何评价一个关系模式设计的优劣?(插入、更 新、删除异常) 补充(关系代数) 1、 传统的集合运算。 (并、交、差、笛卡尔积) ; 2、 专门的关系运算。 (选择、投影、连接、自然连接、除法)5.3.2 函数依赖 函数依理论利用一个关系中属性之间的依赖关系评价和优化关系模式,以保证存储到数据库中 的关系具有较好特性; 1、 函数依赖: (1) 设 R(U)为一关系模式,X 和 Y 为属性全集 U 的子集,若对于 R(U)的任意一个可能的 关系 r, 中不可能存在两个元组在 X 上的属性值相等, r 而在 Y 上的属性值不等, “X 则称 函数决定 Y”或“Y 函数依赖于 X” ,并记作 X ? Y,其中 X 称为决定因素,因为根据函数 依赖定义,给定一个 X,就能惟一决定一个 Y。 (翻译:只要 X 上的属性值相等,则 Y 上 的属性只就相等) (2) 这里讨论的函数关系与数学上的不同,是不能计算的,是一个关系中属性之间存在的依 赖关系;它是一种语义范畴的概念,只能根据两个属性之间的语义来确定一个函数依赖 是否存在。 2、 完全(f)与部分函数(p)依赖: (1) 在关系模式 R(U)中,如果 X?Y 成立,并且对 X 的任何真子集 X’不能函数决定 Y,则 称 Y 对 X 是完全函数依赖,被记作 X---f---?Y。 (2) 若 X?Y,但 Y 不完全函数依赖于 X,则称 Y 对 X 是部分函数依赖,记作 X--p?Y(即至 少存在一个真子集 X’函数决定 Y) ; 3、 传递函数依赖: 在关系 R(U)模式中,如果 X 决定 Y, 不属于 X) 不决定 X,Y 决定 Z,则称 Z 对 X 传递函 (Y ,Y 数依赖。 4、 平凡与非平凡函数依赖: (1) 若 X 决定 Y,但 Y 属于 X,则称 X?Y 是平凡函数依赖,否则称非平凡函数依赖; (2) 即平凡函数依赖,仅当其右边的属性集是左边属性集的子集时成立; (全属于) (3) 非平凡函数依赖, 仅当其右边的属性集至少有一个属性不属于左边有集合时成立;部分) ( (4) 完全非平凡函数依赖: 仅当其右边的属性集中属性都不在左边的集合时成立;都不属于) ( 5、 码: (1) 在关系模式 R(U)中,K 为 R 的属性或属性组,若 K 完全函数决定 A1.A2?.An,则 K 为 关系模式 R 的候选码(应理解为一个属性组) ,包含在候选码中的属性称为主属性,否则 为非主属性; (2) 若一个关系的候选码不止一个,则选定其中一个作为关系 R 的主码; (3) 关系的码属性除了必须完全函数决定关系的所有其他属性外,还必须满足最小化规则, 即在关系模式 R(U)中,不存在一个 K 的真子集能够函数决定 R 的其他属性。 6、 函数依赖的推理规则: (Armstrong 公理及推论) (1) 自反律:若 Y(包含于)X(包含于)U,则 X?Y 成立; (2) 增广律:若 X?Y,且 Z(包含于)U,则 XZ?YZ 成立; (3) 传递律:若 X?Y,Y?Z,则 X?Z 成立; 推论 (4) 合并规则:若 X?Y,X?Z 成立,则 X?YZ; (5) 分解规则:若 X?Y 和 Z(包含于)Y 成立,则 X?Z 也成立; (6) 伪传递规则:若 X?Y,YW?Z,则 XW?Z 成立; 7、 属性集闭包: (1) 设 F 是属性集 U 上的函数依赖集,X 为 U 的一个子集,那么对于 F,属性集 X 关于 F 的闭 包(用 X+表示)为:X+={A|X?A}(最大的 Y 的集合) (2) 由属性集团包的定义可知, 若想判断函数依赖 X?Y 是否成立, 只要计算 X 关于函数依赖 集 F 的闭包,若 Y 是 X 闭包中的一个元素则 X?Y 成立; 8、 确定关系的码: (1) 利用迭代算法计算 X+,步骤如下: (A) 选 X 作为闭包 X+的初值 X(0) ; (B) 由 X(i)计算 X(i+1)时,它是由 X(0)并上属性集合 A 所组成,其中 A 满足下 列条件:Y(包含于)X(i) ,且 F 中存在函数依赖 Y?Z,而 A(包含于)Z。因为 U 是有穷的,所以会得到 X(i)=X(i+1) ,此时 X(i)为所求的 X+。 5.3.3 规范化设计方法 1、 第一范式: (1) 定义:设关系模式 R(F,U) ,如果 R 的每一个属性都是不可分的数据项,则此关系模式 为第一范式; (2) 一个给定关系和第一范式(1NF)的区别: (A) 一个关系中的数据按照行和列的形式组织,每个元组具有相同数目的属性个数,且 每一个元组的属性值具有统一的数据类型和长度;元组或属性的排列与顺序无关, 每个元组必须通过一个属性或属性组惟一识别; (B) 第一范式实际上对关系增加了一个约束,即关系中元组的每个属性都只取一个值, 第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系数据库。 2、 第二范式: (1) 定义:若关系模式 R(F,U)是 1NF,且每个非主属性完全函数依赖于码,则称 R 为第二 范式,即在 2NF 中不存在非主属性对码的部分依赖; (2) 仅满足第一范式关系会存在种种问题,要消除必须用更高级的范式标准来设计,称为标 准化; (3) 具体做法是将大的关系分解成多个小的关系,使分解后的关系满足更高级范式的要求。 (4) 第二范式实际上对关系增加了一个约束,就是关系中的每一个属性必须完全依赖于主码 (造成分表) 即在第一范式的基础上, , 消除非主属性对主码的部分函数依赖可达到 2NF; 3、 第三范式: (1) 定义:若关系 R(U,F)为第一范式,且不存在非主属性对主码的传递函数依赖,则称 R 为第三范式; (2) 第三范式是在第二范式的基础上对关系又增加了一个约束,就是关系中的每一个非主属 性必须只依赖于主码。 2NF 的基础上, 即 消除非主属性对主码的传递函数依赖可达到 3NF。 4、 改进的第三范式(BCNF) : (1) 定义:如果关系模式 R 是 1NF,且每个属性既不存在部分函数依赖也不存在传递函数依 赖于候选码,则称 R 是改进的第三范式(BCNF) 。 5、 多值依赖与 4NF: (1) 多值依赖:表示关系中属性(如 A、B、C)之间的依赖,对于 A 的每个值,都存在一个 B 或 C 的值的集合,而且 B 和 C 的值相互独立,记为:A??B、A??C (2) 第四范式: 如果关系模式 R 属于 1NF, 对于 R 的每个非平凡的多值依赖 X?Y Y 不属于 X) ( , X 含有候选码,则 R 是第四范式。即是从 BCNF 范式中消除主码内的独立依赖集(非平凡 多值依赖)可达 4NF; 6、 连接依赖与 5NF (1) 连接依赖:设关系模式 R,R 的属性子集为 R1、R2、R3、R4、R5、R6、R7?.,当且仅当 R 的每个合法值等于 R1、R2、R3、R4、R5、R6、R7?的投影连接时,称 R 满足连接依赖; (2) 第五范式:设 R 是一个满足 5NF 的关系模式,当且仅当 R 的每一个非平凡连接依赖都被 R 的候选码所蕴含,即从 4NF 中消除非候选码所蕴含的连接依赖为 5NF; 7、 总结: (1) 范式表达了关系模式满足的条件,也是衡量关系模式设计优劣的标准; (2) 利用范式进行规范化设计的目的是消除数据冗余,避免出现异常,使结构更合理; (3) 规范化设计的基本过程是对关系进行的分解,消除属性间不合理的数据依赖,用一组等 价的子关系代替原有的关系; (4) 数据库规范化的程序越高,其关系表就越多,从而增加了表之间连接运算的代价,影响 了数据库的执行速度和性能。所以通常关系模式规范化工作仅做到 3NF,这样既使关系 中不合理的属性基本消除,规范化程度也不太高,保证数据库有较好的性能。5.4 数据库模式设计5.4.1 初始关系模式的设计 1、 把 ER 图转换成关系模式: (1) 把 ER 模型中的每个实体集转换成一个同名的关系, 实体集的属性就是关系的属性, 实体 集的码就是关系的码; (2) 把 ER 模型中的每个联系转换成一个关系, 与该联系相连的各实体集的码以及联系的属性 转换成为关系的属性。 (A) 若联系为 1:1,则每个实体集的码均是该关系的候选码; (B) 若联系为 1:n,则关系的码为 n 端实体集的码; (C) 若联系为 m:n,则关系的码为各实体集码的组合; (3) 合并具有相同码的关系 2、 检查确认对象:检查转换后的每个关系名和属性名是否符合数据库设计关于统一命名的约定; 5.4.2 优化关系模式 1、 模式分解原则: (1) 分解具有无损连接性:分解后的关系能够恢复成原来的关系; (2) 分解保持函数依赖: (A) 无损连接和保持函数依赖是用于衡量一个模式分解是否导致原有模式中部分信息丢 失的两个标准; (B) 当一个关系被分解后会出现几种结果,既有无损连接,又能保持函数依赖是较理想 的分解结果,意味着在分解的过程中没有丢失原有模式的任何信息; (C) 一般情况下,分解到 3NF 就足够了,但在 3NF 关系下,仍存在一定程度上的更新异 常或不一致的隐患,但与数据库性能比较起来是可以忽略的,因为在数据库设计过 程中通过增加一些数据约束,就可以解决 3NF 引起的数据问题了。 3、 优化属性:确定各字段的类型和长度; 4、 确认模式满足需要: 5.4.3 数据完整性设计 1、 指定义数据库中存储的数据值满足的约束条件,通过对存储的数据值的约束维护关系的完整性。 2、 数据值满足条件分为: (1) 域约束:限制指定列的取值及范围; (2) 主码约束:定义每个关系的主码值不空,且惟一; (3) 引用完整性约束:定义不同模式的属性间满足的条件,及一个关系模式中属性间可能满 足的条件; 5.4.4 安全模式和外模式的设计 1、 根据选定的 DBMS 支持的安全控制特征来确定; 2、 根据不同用户对数据库存取特点定义相关的外模式;第六章 存储技术与数据库物理设计6.1 文件组织6.1.1 数据库的物理结构 1、 数据库中的应用数据是以文件形式存储在外存上的,文件在逻辑上被组织成记录的序列,即每个 DB 文件可看作是逻辑记录的集合; 2、 一个文件在磁盘上占有一定的物理存储空间, 文件中的每个逻辑记录被映射存储到某个特定的磁 盘块上,一个文件在物理上可以看作是由存放文件记录的一系列磁盘块组成,称为物理文件; 3、 文件的逻辑记录与磁盘间的映射关系是由操作系统或 DBMS 来管理的,当需要对一个文件的逻辑 记录进行操作时,先要根据这种映射关系找到该逻辑记录所在的磁盘块,然后再进行操作。 4、 从数据库物理结构角度需要解决如下 4 个问题: (1) 文件的组织; (2) 文件的结构; (3) 文件的存取; (4) 索引技术; 6.1.2 文件组织 1、 数据库与文件的对应关系 (1) 在外存中,数据库以文件形式组织,文件由逻辑记录组成,记录由多个域组成; (2) 一个关系数据库包括一张或多张关系表,关系表与文件的对应关系有如下方式: (A) 每张关系表单独用一个文件来存储,由 DBMS 通过 OS 的文件管理功能来管理; (B) 现代中大型 DBMS 是由 OS 直接分配一块大的磁盘空间, DBMS 将该磁盘空间作为数据 库磁盘文件直接管理,DB 的所有关系表都存储在该文件中; (4) 关系表在逻辑上由一系列元组组成,元组由多个属性组成,每个元组可以用磁盘文件中 的一个逻辑记录来存储,记录包括多个域,对应元组的多个属性; 2、文件记录格式: (1) 数据库文件通常采用两种逻辑记录格式:定长记录格式和变长记录格式;6.2 文件结构与存取6.2.1 堆文件 1、 堆文件也称无序文件,记录随机在存储在文件物理空间是,新插入的记录存储在文件的末尾; 2、 堆文件常常用作存储那些将来使用,但目前不清楚如何使用的记录,为了实现文件记录的有效存 取,堆文件经常与附加的存取路径一起使用; 3、 查找操行平均需要搜索(B+1)/2 个磁盘块,效率比较低; 4、 插入操作十分简单,先读文件头,找到最末磁盘地址,将最末磁盘块读入内存,将需插入的新记 录写入磁盘块的末端,最后将修改过的磁盘块写回磁盘; 5、 删除比较复杂,可以先找到被删除记录所在的磁盘块,读入内存后在内存缓冲区删除记录,最后 再写回磁盘;也可以在每个记录的磁盘空间增加一个删除标志位,当需要删除记录时,将标示位 置 1; 6.2.2 顺序文件 1、 顺序文件按照文件记录在查询码上的取值的大小顺序排列各个记录; 2、 顺序文件的每个记录中有一个指针字段,根据查询码大小用指针将各个记录按序连接起来; 3、 文件建立时,应尽量使记录的物理顺序与查找码的顺序一致,以减少访问磁盘块的次数; 4、 根据查询条件对顺序文件进行查询时,如查询条件定义在查找码上,则使用二分法查找技术快速 找到记录,如条件不在查找码上,则必须从头到尾依次扫描磁盘块,与堆文件一致,所以顺序文 件的访问效率也不高; 5、 顺序文件插入工作包括定位和插入: (1) 定位:在指针链中找到插入的位置,即插入记录在哪个记录的前面; (2) 插入:如有自由空间,则在该位置插入新记录,如没有自由空间,则只能插入溢出块中, 重新调整记录指针链关系,保证记录顺序; 6.2.3 聚集文件 1、 聚集文件是一种具有多种记录类型文件,存储了来自多个关系表的数据,每个关系表对应文件中 的一种记录类型; 2、 当数据库中数据量效大时,对数据库查询需要多次访问磁盘文件,严重影响性能指标,为了降低 多表操作时的磁盘访问次数,提高多表查询速度,可采用聚集文件; 3、 聚集文件将不同关系表中有关联关系的记录存储在同一磁盘块内, 从而减少多表查询时磁盘块的 访问次数,提高处理速度; 6.2.4 索引文件 是一种利用索引技术技术快速文件访问的文件组织和存取方法; 6.2.4 散列文件 是一种利用散列函数支持快速文件访问的文件组织和存取方法;6.3 索引技术6.3.1 基本概念 1、 索引技术:是一种快速文件访问技术,它将一个文件的每个记录在某个或某些域(属性)上的取 值与该记录的物理地址直接联系起来,提供了一种根据记录域的取值快速访问文件记录的机制; 它的关键是建立取值域到记录的物理地址的映射关系,这种映射关系叫索引; 2、 索引技术分类: (1) 有序索引技术:利用索引文件(相当于书的目录)实现记录域(查找码)取值到记录物 理地址间的映射关系,索引文件由索引记录组成,每个记录中记载一个索引项,索引项 记录了某个特定的查找码值和具有该值的数据文件记录的物理地址; (2) 散列技术:利用一个散列函数实现记录域取值到记录物理地址间的直接映射关系; 3、有序索引:有序索引作为基于索引文件的索引技术,需要考虑两个问题: (1)如何组织索引文件中的索引记录; (2)如何从索引文件出发,访问数据文件中的数据 记录; (A) 当需要采用有序索引机制快速访问数据文件时,首先要为该数据文件建立一个索引 文件,它是索引记录和索引项的集合; (B) 索引文件建立的方法:首先选定某些记录域作为查找码,然后建立数据记录在查找 码上的取值与物理地址间的映射关系,组成索引项。所有索引项作为索引记录存储 在索引文件中,索引文件根据某个特定的查找码值的顺序组织为顺序文件; (C) 一个数据文件可以有多个(提供的查询方式可多样)查找码和索引文件; 6.3.2 有序索引的分类及特点 1、 聚集索引与非聚集索引 (1) 对数据文件和它的一个特定的索引文件,如果数据文件中数据记录的排列顺序与索引文 件中索引项的排列顺序相一致,则该索引文件称为聚集索引,否则称为非聚集索引; (2) 在一个数据文件上除了建立一个聚集索引外,还可建立多个非聚集索引; 2、 稠密索引和稀疏索引 如果数据文件中的每个查找码都在索引文件中都对应一个索引记录,称为稠密索引,如果只一 部分对应,则称为稀疏索引; 3、 主索引和辅索引 在数据文件包含主码的属性集上建立索引称为主索引,在非主码属性上建立的索引称为辅索引; 4、单层索引和多层索引 (1) 单层索引(线性索引) :索引项根据键值在索引文件中顺序排列,组织成一维线性结构, 每个索引项直接指向数据文件中的数据记录; (2) 当数据文件很大时,即使采用稀疏索引,建成的索引文件也很大,导致效率低下,为解 决该问题,可对索引文件中的索引项本身再建立一级稀疏索引,组成 2 层索引结构;进 一步地,可建立多层树型索引结构来快速定位;6.4 散列技术6.4.1 散列文件 1、 散列是一种快速查找技术,它利用定义在文件记录上的查找码,通过计算一个散列函数,以散列 函数值作为记录的物理地址,实现对文件记录直接快速访问。 2、 首先指定文件记录的一个域作为查找码(散列域) ,然后定义一个查找码上的函数(散列函数) , 函数的输入为查找码值,输出为物理地址; 3、 一般使用桶作为基本的存储单位, 一个桶可存放多个文件记录, 物理地址可以是记录所在的桶号, 散列函数的输出可以是桶号; 6.4.2 散列函数 1、 散列方法依赖于好的散列函数,它应该尽可能均匀地将查找码分布到各个桶中,具体要满足如下 两个条件: (1) 地址的分布是均匀的; (2) 地址的分布是随机的; 6.4.3 桶溢出 1、 产生桶溢出的两个原因: (1) 文件初始设计时,为文件记录预留的存储空间不足; (2) 散列函数的均匀分布性不好; 2、 设计散列函数时,应根据文件大小决定物理空间,一般应有 20%余量,再设计合适的桶数目和桶 大小,尽可能留有一些空闲桶,降低桶溢出的可能性; 3、 桶溢出的现象是难免的,需要 DBS 采用相应的桶溢出处理机制; 4、 散列方法的缺点:为了避免桶溢出。必须选一合适的散列函数,但这比较复杂,而且不象索引文 件那样可以据数据记录变化动态调整。6.5 数据字典1、 数据字典(系统目录)中存储了数据库对象的各类描述信息和 DBMS 所需的控制信息,全称数据 库元数据; 2、 数据库对象的各类描述信息:包括外模式、模式、内模式以及它们之间的映射的描述; 3、 DBMS 所需的控制信息:包括查询优化、安全性检查、用户权限验证等; 4、 数据字典主要包括: (1) 关系模式信息; (2) 与视图描述有关的信息; (3) 关系的存储结构和存取方法信息; (4) 完整性约束信息; (5) 安全性有关信息; (6) 数据库运行统计信息;6.6 数据库物理设计6.6.1 设计步骤和内容 1、 数据库物理结构设计:在具体的硬件环境、OS、DBMS 约束下,根据数据库逻辑设计结果,设计 合适的数据库物理结构。目标是存储空间占用少、访问效率高和维护代价低; 2、 一旦选定了硬件平台、OS 和 DBMS,数据库的数据存储和存取方式等可用的物理模式也就随之确 定了; 3、 数据库物理设计主要包括以下步骤: (1) 数据库逻辑模式调整: 将数据库逻辑模式及其视图转换为 DBMS 支持的基本表和视图, 并 利用 DBMS 提供的完整性机制设计业务规则; (2) 文件组织与存取设计:配置基本表的文件组织形式,据实际情况为基本表设计合适的存 取方法和路径; (3) 数据分布设计: (4) 安全模式设计: (5) 确定系统配置: (6) 物理模式评估: 6.6.2 数据库逻辑模式(是独立于具体的 DBMS 的)调整 1、 物理数据库设计首先需要根据数据库逻辑结构信息,设计目标 DBMS 平台支持的基本表的模式信 息, 这些模式信息代表了所要开发的具体目标数据库的结构, 这个过程称为数据库逻辑模式调整, 主要包括如下设计内容: (1) 实现目标数据库基本表和视图: 采用目标 DBMS 所支持的建表方法, 设计基本表及其面向 模型的完整性约束; (2) 设计基本表业务规则; (如 check) 6.6.3 DB 文件组织与存取设计 1、分析事务的数据访问特性 (1) 使用事务-基本表交叉引用矩阵, 分析系统内数据库事务对各个基本表的访问情况, 确定 事务访问了哪些基本表,对这些基本表执行了何种操作,并进一步分析各操作涉及到的 基本表属性; (2) 估计各事务的执行频率; (3) 对每张基本表,汇总所有作用于该表上的各事务的操作频率信息; 2、 了解并选择数据库文件结构 (1) 如果数据库中的一个基本表中的数据量很少,并且操作非常频繁,该基本表可采用堆文 件组织方式; (2) 顺序文件支持基于查找码的顺序访问,也支持快速二分查找; (3) 如果用户查询是基于散列域值的等值匹配,特别是如果访问顺序是随机的,散列文件比 较合适。但散列文件组织不适合以下情况: (A) 基于散列值域的非精确查询; (B) 基于非散列域进行查询时; (4) B-树和 B+树文件是实际数据库系统中使用非常广泛的索引文件结构, 适合于定义在大数 据量基本表上、基于查找码的等值查询等; (5) 如果某此重要而频繁的用户查询经常需要进行多表连接操作,可考虑将这些基本表组织 为聚集文件; 3、 设计存取路径: (1) 为数据库文件设计合理的物理存储位置; (2) 为基本表设计索引机制(加快了数据查询速度,减慢了数据更新速度) :索引可以提高文 件存取速度, 改善访问性能, 但索引由 DBMS 管理, 它的建立、 维护需要一定的系统开销, 数据的操作会引起索引的重新调整,还占用一定的存储空间,可根据如下原则决定是否 为一个基本表建立索引: (A) 对于经常需要查询、连接、统计操作,且数据量大的基本表可考虑建立索引,而对 于经常执行插入、删除、更新操作或小数据量的基本表应尽量不建立索引; (B) 一个基本表上除了可以建立一个聚集索引外,还可以建立多个非聚集索引,但索引 越多, 对表内数据更新所需的开销越大, 对于一个更新频繁的表应少建或不建索引; (C) 索引可以由用户根据需要随时创建或删除,以提高数据查询性能; 6.6.4 数据分布设计 1、不同类型数据的物理分布 (1) 各种数据在系统中的作用不同,使用的频率也不一样,应根据实际使用情况放在合适的 物理介质上; (2) 使用频率低但数据量大的,可以放在磁带中,而使用频繁,要求响应时间短的,必须放 在支持直接存取的磁盘存储介质上; 2、 应用数据的划分和分布 (1) 根据数据的使用特征划分:可将基本表划分为频繁使用分区和非频繁使用分区,分别存 放在不同的磁盘上,对前者可考虑建立 B+树等多层索引,而后者不建立或只建立单层索 引; (2) 根据时间、地点划分; (3) 分布式数据库系统中的数据划分: 3、派生属性数据分布 (1) 派生属性指该属性的取值可根据表中其他属性的取值惟一确定; (2) 对带有派生属性的基本表可采用两种实现方式: (A) 将派生属性作为基本表内单独一列,称为派生列; (B) 派生属性不出现在基本表中; 4、 关系模式的去规范化 (1) 在数据库物理设计阶段,可以对考虑数据库中某些 3NF、BCNF 模式是否可以降低其规范 化程度,以提高查询效率,这称为关系模式的去规范化处理,但不满足 3NF 的关系模式 又可能导致数据库访问异常,因此,设计基本表时,需在规范化和查询效率间权衡; 6.6.5 安全模式设计 1、系统安全设计 (1) 是指为数据库服务器合法用户分配用户名和口令,使其能够正常登录服务器访问所需的 数据,还可采用基于 CA 认证的系统安全控制机制; 2、 数据安全设计 (1) 是指通过数据库系统视图机制和授权机制为用户对数据库对象访问的权限; (2) 引用数据视图机制,只给用户需求的那部分数据访问权限,防止由合法用户造成信息泄 密,另外数据视图还可以防止基本表发生改变时,影响用户的访问; (3) 权限是允许用户对一给定的数据库对象可执行的操作; (4) 数据库安全设计需要根据用户需求,采用授权机制,为用户分配合法访问的权限; 6.6.6 确定系统配置 1、 要根据实际应用系统的运行情况配置系统参数; 6.6.7 物理模式评估 1、 在设计过程中,通过对时间效率、空间效率、维护代价和用户要求权衡考虑,择优采用; 2、 评估物理数据库的方法完全依赖所选用的 DBMS,主要从定量估算各方案的存储空间、存取时间 和维护代价入手;第七章 数据库应用系统功能设计7.1 软件体系结构与设计过程7.1.1 软体体系结构 1、 软件体系结构又称软件架构,软件体系结构={构件,连接件,约束}。 2、 构件是组成系统的具有一定独立功能的不同粒度的程序模块、独立程序或软件子系统,是组成软 件的系统元素; 3、 连接件将不同的构件连接起来,表示了构件间的相互作用; 4、 约束一般是对象连接时的规则,或指明了构件连接的条件。 5、 软件体系结构描述了软件系统的总体组织和层次结构、系统元素及其功能分配、全局控制、系统 元素间的协调和交互、数据存取等; 7.1.2 软件设计过程 1、 概要设计 (1) 定义:是建立软件系统的总体结构和模块间的关系,定义各功能模块的接口,设计全局 数据库、规定设计约束、制定组装测试计划; (2) 一个好的概要设计要求是: 良好的总体结构、 功能模块间较低的耦合度和较高的内聚度, 并尽量降低模块接口的复杂性; (3) 可以采用层次结构图表示软件总体结构,图中节点代表功能模块。 2、 详细设计 (1) 是细化概要设计产生的功能模块,形成可编程的程序模块,并用某种过程设计语言设计 程序模块的内部细节,为编写软件代码提供依据。 (2) 可选用结构化设计方法、面向对象设计方法等; 3、 关于软件总体设计 (1) 一些大的 DBAS 可根据逐步抽象和层次化原则,将概要设计分解成两个步骤: (A) 首先是软件总体结构设计,即对软件需求进行分解; (B) 第二步是将每个子系统进一步划分为功能模块,定义各模块的数据结构、相互间交 互关系;7.2 DBAS 总体设计7.2.1 系统总体设计 任务:是根据系统规划与分析结果,特别是技术可行性分析,以及系统需求规范,确定系统总 体框架,作为后续设计活动的基础。 1、 确定 DBAS 体系结构 (1) 指将系统从功能、层次结构、地理分布等角度进行分解,划分为多个子系统。定义各子 系统应实现的功能,设计全局控制,明确各子系统间的交互和接口关系; (2) 可以从功能角度进行分解,也可以根据 DBAS 自身固有的层次结构特征进行分解; (3) 将系统分解为多个子系统后,需选择和设计合适的系统体系结构,将这些子系

我要回帖

更多关于 vba 自动获得db路径 的文章

 

随机推荐