数据库设计的理论与方法
1 数据库设计概述
数据库(database)是数据管理的最新技术,具有数据结构化、最低冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点。所谓数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。[王珊,陈红. 数据库系统原理教程. 北京:清华大学出版社, 1998.7]数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。数据库的应用已经越来越广泛了,不仅大型计算机及中小型计算机,甚至微型计算机都用先进的数据库技术来保持系统数据的整体性、完整性和共享性。
数据库设计(database design)是将业务对象转换为表和视图等数据库对象的过程。[Ryan K. Stephens, Ronald R. Plew. Database Design. Macmillan Computer Publishing U.S.A, 2001]数据库设计是数据库应用系统开发过程中首要的和基本的内容。数据库是信息系统的核心和基础。它把信息系统中的大量数据按照一定的模型组织起来,提供存储、维护、检索数据的功能,是信息系统可以方便、及时、准确从数据库中获取所需的信息。一个信息系统的各个部分能否紧密的结合在一起以及如何结合,关键在数据库。因此必须对数据库进行合理设计。
按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下六个阶段:
(1)需求分析
(2)概念结构设计
(3)逻辑结构设计
(4)物理结构设计
(5)数据库实施
(6)数据库运行与维护
2 数据库需求分析
进行整个数据库设计必须准确了解与分析用户需求(包括数据和处理)。需求分析是整个设计过程的基础,是最困难、最耗费时间的一步。作为地基的需求分析是否做得充分与准确,决定了在其上构建数据库大厦的速度和质量。
需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
需求分析调查的重点是“数据”和“处理”,通过调查、收集和分析,获得用户对数据库的如下需求:
(1)信息需求。指用户需要从数据库中获得信息的内容与性质。由信息要求可以导出数据要求,即在数据库中需要存储哪些数据。
(2)处理要求。指用户需要完成什么处理功能。明确用户对数据有什么样的处理要求,从而确定数据之间的相互关系。
(3)安全性与完整性要求。
3 数据库概念结构设计
概念结构设计是将分析得到的用户需求抽象为概念模型的过程。即在需求分析的基础上,设计出能够满足用户需求的各种实体以及它们之间的相互关系概念结构设计模型。这样才能更好地、更准确地用某一DBMS实现这些需求。它是整个数据库设计的关键。
概念结构的主要特点是能真实、充分地反映现实世界;易于理解;易于更改;易于向关系、网状、层次等各种数据模型转换。描述概念模型的有力工具是E-R模型。
设计概念结构通常有四类方法:
(1)自顶向下。即首先定义全局概念结构的框架,然后逐步细化;
(2)自底向上。即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构;
(3)逐步扩张。首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构;
(4)混合策略。即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。其中最经常采用的策略是自底向上方法。即自顶向下进行需求分析,然后再自底向上设计概念结构。[萨师煊,王珊. 数据库系统概论(第三版). 北京:高等教育出版社, 2003]
4 数据库逻辑结构设计
概念结构是独立于任何一种数据模型的信息结构。逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
设计逻辑结构时一般要分三步进行:
(1)将概念结构转换为一般的关系、网状、层次模型;
(2)将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;
(3)对数据模型进行优化。[Abraham Silberschatz, Henry F. Korth, S. Sudarshan. Database System Concepts, Fourth Edition. McGraw-Hill Companies, Inc, 2002]
数据库的概念结构和逻辑结构设计式数据库设计过程中最重要两个环节。
5 数据库物理结构设计
数据库在物理设备上的存储结构与存储方法称为数据库的物理结构,它依赖于给定的计算机系统。为一个给定的逻辑数据模型选取一个最适合应用要求的物理结果的过程,就是数据库的物理设计。
数据库的物理结构设计通常分为两步:
(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
6 数据库实施、运行和维护
完成数据库的物理设计以后,设计人员就要用RDBMS提供的数据定义语言和其他使用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受的源代码,再经过调试产生目标模式,然后就可以组织数据入库了。
相关推荐
《数据库原理》课程设计 学生信息管理系统
《数据库原理》课程设计 学生信息管理系统 : 有需求分析 概念结构设计 逻辑结构设计 程序运行截图 课设小结
数据库结构设计小结(2)
数据库设计的理论与方法 1 数据库设计概述 数据库(database)是数据管理的最新技术,具有数据结构化、最低冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点。所谓数据库 是指长期存储在计算机内的、有组织的、可共享的数据集合。[王珊,陈红. 数据库系统原理教程. 北京:清华大学出版社, 1998.7]数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的...
数据库逻辑结构设计
包含了对数据库逻辑结构设计的方法等的归纳总结。
聊聊数据库表结构设计心得
本文讨论是一般表的设计,有一定的普遍性和通用性,当然对于特殊性的考量则不在本文讨论之列。 自增 id Java 层的 CRUD 都是围绕自增 id 的,以这个 id 为依据的,所以自增 id 不可或缺,每张表都应该有。当然其他类型的 id,如 uuid、雪花 id 都可以并存。 还有分页、表与表的关联都离不开这个自增 id。 createDate & updateDate 有了这两个字段,你可以追溯到数据的时间点,创建和修改的时间点,以方便查找问题。MySQL 下类型为 datetime,在 Ser
c#csharp数据库课程设计简单功能实现
数据库课程设计分工的一部分,实现评论和预测功能。
数据库的课程设计 基本概念、基本原理、数据库设计
数据库的课程设计,对一般数据库的操作有一定的包括,可以作为参考。课程设计的目的是为了帮助学生较好地实现理论与实践的结合。通过课程设计,可以使学生进一步复习、巩固所学的数据库的基本概念、基本原理、数据库设计的方法与技术等理论,并且吸收教学过程中介绍的管理数据库开发实例中的经验,通过一个具体应用实例的亲自设计与开发,借助课程设计环节及上机操作,从而使对数据库开发的感性认识和具体实践相结合,帮助学生初步掌握管理数据库的基本开发技术与方法,为进一步学习管理信息系统开发等知识打下良好的基础。从而具有一定的管理数据库的开发能力。
数据库技术的基本概念、原理、方法和技术
数据库技术的概念、原理、方法和技术
inferCNVpy分析流程学习
inferCNV的用途大家都已经很清楚了,接下来就走一下流程,试一试Python版的inferCNV。使用的数据集为:GSE188711,既往推文可见:Scanpy分析全流程(含harmonypy整合/细胞周期矫正/双细胞检测及去除)(
数据库结构设计小结(1)
这几天读了一些关于数据库结构设计的文章,简单汇总一下数据库结构分类方面的内容。 1、层次数据库结构 层次数据库结构将数据通过一对多或父结点对子结点的方式组织起来。一个层次数据库中,根表或父表位于一个类似于树形结构的最上方,它的子表中包含相关数据。层次数据库模型的结构就像是一棵倒转的树。 优点: 快速的数据查询 便于管理数据的完整性 缺点: 用户必须十分熟悉...
《科研伦理与学术规范》 全部 习题_答案 2020年秋
科研伦理与学术规范 答案 文章目录科研伦理与学术规范 答案1. 第一章课后习题(必做) 答案1.1 第一章Demo2. 第二章课后习题(必做) 答案3. 第三章课后习题(必做) 答案4. 第四章课后习题(必做) 答案5. 第五章课后习题(必做) 答案6. 第六章课后习题(必做) 答案 # 每行5题 #写于2020.11.17 侵删 1. 第一章课后习题(必做) 答案 ABC, A, B ,D ,ABCD ABC, D, A, BCD, C D, D, 1.1 第一章Demo
金蝶ERP元数据解析:字段属性与表结构映射实战
本文深入解析金蝶ERP元数据的核心价值与应用实践,详细介绍了字段属性与表结构映射的关键技术。通过缓存获取与工具类直连两种方案对比,结合实际案例展示元数据在数据库校验、动态表单生成等场景的应用,帮助开发者高效解决二次开发中的常见问题。
数据库结构设计小结(1)
避开爬虫坑:手把手教你合法获取百度地图POI边界数据(以学校为例)
本文详细介绍了如何合规获取百度地图POI边界数据的方法论,特别以学校为例。通过解析POI数据结构、合法使用百度地图API接口、优化请求策略以及数据处理技巧,帮助开发者和研究者在遵守平台规则的前提下高效获取地理信息。适用于学术研究、商业分析等多种场景,确保数据采集的合法性与准确性。
数据库结构小结
sql中把一个查询结果当做另一个表来查询可以理解查询结果为一个临时表 使用left join 比直接使用where速度快的原因: 多表使用left join只是把主表里的所有数据查询出来,其他表只是查询表中的符合条件的某一条记录,所以非常快;而多表使用where内联,是把所有表的数据全部查出来,然后进行对比,所以速度比较慢。 使用left join要注意确定哪一张表为主表,如果无法确定主表,则选择...
40分钟快速入门Dart基础(上)
针对final 和const 理解的有点模糊的可以参考这篇文章: 可以参考这里Flutter 知识梳理(Dart)-Dart中static final const 区别看是不是超级好上手,好操作~其实Dart的整个学习起来还是蛮简单的,对于有基础的老司机更简单一些。分分钟敲起来~这篇文章就简单的介绍到这里如何短时间快速入门Dart,避免入坑。由于是想让大家快速入门Flutter,所以针对上面的这些章节我们讲解的只是一些在开发Flutter 过程中常用的一些方法和函数。
Simulink标定工作流优化:当A2L文件遇到ELF,如何用Matlab脚本打通‘最后一公里’?
本文探讨了Simulink标定工作流中A2L与ELF文件处理的自动化解决方案。通过Matlab脚本实现A2L文件智能合并与ELF文件自动匹配,解决了传统手动操作效率低下和易出错的问题,显著提升汽车ECU开发效率。重点介绍了脚本实现细节及持续集成系统集成方案。
数据库设计小结
本文总结自数据库设计step by step 1.业务规则约束 ①为字段设置数据类型或设置字段为notnull ②check约束或外键约束 ③程序代码中实现 2.辨别实体与属性 ①实体应包含描述性信息 ②多值属性(不是指可以取多个值,而是指同时可以取多个值)应作为实体来处理 ③属性应附着在其直接描述的实体上 3.ER实体关系图 靠近某个实体的关系的连通数
实例详解C++程序的五大内存分区
本文详细讲述C++程序在运行时的5大内存分区。 下面使用日常开发中的编程实例,详细介绍一下这5个分区,以便大家能更深刻的理解这5大内存分区。 1、栈内存区 栈内存区是我们用的最多的分区,只要有函数的地方都会使用到这个分区。栈分区是用来存放函数参数及函数局部变量值的内存区,是由编译器在编译时自动分配和释放的。 函数中的参数与函数中的局部变量占用的内存是代码执行到函数(进入函数)是分配的,在............
DBS小结
《数据库系统原理》主要介绍的是数据库技术的基本原理、方法和应用技术。 它可以使我们能有效地使用现有的数据库管理系统和软件开发工具,掌握数据库结构的设计和数据库应用系统的开发原理。 在这里,将这本书分为概念部分、方法部分和应用技术部分。
【QT开发教程】如何在Qt中使用Protobuf进行高效数据序列化
Protocol Buffers(Protobuf)是Google开发的一种语言中立、平台中立、可扩展的序列化机制,常用于数据交换和存储。Qt作为一个跨平台的C++图形用户界面应用框架,可以与Protobuf结合使用,实现高效的数据序列化和反序列化。本文将介绍如何在Qt中集成和使用Protobuf,包括基本概念、安装步骤、使用示例以及实际应用。
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
php 无限分类 设计,php无限极分类设计模型代码小结
php无限极分类是经常要用到的,一个简单的php无限极分类的代码如下:数据表结构CREATE TABLE IF NOT EXISTS `category` (`id` int(5) NOT NULL AUTO_INCREMENT COMMENT '唯一自增id',`pid` int(5) NOT NULL DEFAULT '0' COMMENT '父id',`sort` int(2) NOT NU...
SIMATIC S7-1200, S7-1500 PID 控制[手册]
SIMATIC S7-1200, S7-1500 PID 控制[手册]
项目小结之数据库设计
最近做了一个小项目完整的数据库设计,想总结一些设计上的所得,希望大家多多指教。 有时一个项目,普通程序员一般不会去接触数据库设计,一般都有专业的DBA或是老程序员去设计,下面是我推测的几点可能原因: 1:新手对项目了解不深,正好这是老鸟的长处。 2:新手对局部的关注往往大于整体,很难考虑的特别周全。 3:数据库设计的好坏在某种程度上直接影响项目的复杂度以及性能。 第一
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
246



被折叠的 条评论
为什么被折叠?



