数据库的设计

简介: 数据库的设计

数据库设计主要有以下步骤:


需求分析


概念结构设计


逻辑结构设计


物理结构设计


数据库的实施


数据库的运行和维护


根据重点,这里主要介绍一下前四点,其中着重介绍概念结构设计和逻辑结构设计。


1需求分析


作用顾名思义,一般采用自顶向下的方法。值得注意的是,系统统中的数据则借助数据字典(data dictionary,DD)来描述。数据字典是系统中各类数据描述的集合,数据字典通常包括数据项,数据结构,数据流,数据存储,和处理过程5个阶段。


2.概念结构设计


这里主要是建立E-R图,一般采用自底向上的方法。

大致步骤如下,首先对数据进行抽象处理,再局部设计E-R图,最后再合并成总的E-R图。


2.1数据抽象


对数据进行分类,聚集,概括抽象处理。

分类是确定实体;聚集是确定实体的属性;概括原来的E-R模型没有,这里是对其扩充,是一种子集联系,比如学生下面可以分成本科生、研究生,前者称为超类,后者称为子类。


2.2局部设计E-R图


在多层的数据流图中选择一个适当层次的数据流图,作为设计分E-R图的出发点 ,将各局部应用涉及的数据分别从数据字典中抽取出来参照数据流图,标定各局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型(1:1,1:n,m:n)

这里有几条原则,主要和属性有关

(1)属性不能再具有需要描述的性质。即属性必须是不可分的数据项,不能再由另一些属性组成

(2)属性不能与其他实体具有联系。联系只发生在实体之间

(3)能做属性对待的,尽可能用属性对待


2.3总的E-R图


分两步走

一是合并局部E-R图,形成初步E-R图,二是对初步E-R图优化,消除冗余。

合并局部E-R图,形成初步E-R图:

合理消除各E-R图中的冲突是合并E-R图的主要工作与关键所在。各子系统的E-R图之间的冲突主要有三类:

1)属性冲突:属性域冲突,即属性值的类型、取值范围或取值集合不同;属性取值单位冲突。 解决方法商议,统一

2)命名冲突:同名异义,即不同意义的对象在不同的局部应用中具有相同的名字;异义同名(一义多名),即同一意义的对象再不同的局部应用中具有不同的名字。 解决方法商议、统一

3)结构冲突:同一对象在不同应用中具有不同的抽象(实体、属性,变换成一致的抽象);同一实体在不同子系统的E-R图中所包含的属性个数和属性排列次序不完全相同(属性取并集);实体间的联系在不同的E-R图中为不同的类型(综合,调整)。

消除冗余,形成基本E-R图:

主要方法如下:

分析方法

规范化理论


3逻辑结构设计


这里主要是将E-R图转化为对应模型,以关系模型为例。

E-R图向关系模型的转换,要解决的问题是如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。

主要原则如下:

1685011988117.jpg

(3)具有相同码的关系模式可以合并


4.数据库的物理结构设计


物理设计是为逻辑数据结构模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。

这里主要是了解其常见的存取方法,常用的存取方法有三类:1.索引方法,目前主要是B+树索引方法。2.聚簇方法(Clustering)方法。3.是HASH方法

相关文章
|
12月前
|
安全 NoSQL 网络协议
SSRF内网打穿相关姿势
本文详细介绍了服务器端请求伪造(SSRF)漏洞,包括其定义、漏洞场景、常见漏洞函数、URL伪协议及其利用方法。通过具体的靶机示例,展示了如何利用SSRF漏洞进行内网探测、命令执行、SQL注入、命令注入、XXE注入、Tomcat任意文件上传和Redis未授权访问等攻击。文章还提供了相关工具和参考资料,帮助读者更好地理解和应对SSRF漏洞。
629 0
SSRF内网打穿相关姿势
|
存储 安全 区块链
探索区块链技术在数据安全中的应用
【7月更文挑战第31天】本文深入探讨了区块链技术如何革新数据安全领域,通过其独特的分布式账本技术、加密算法和共识机制,为保护个人隐私、确保数据完整性和防止数据篡改提供了新的解决方案。文章分析了区块链在提高数据透明度、降低中心化风险以及促进数据共享方面的潜力,并讨论了实施过程中可能遇到的挑战和未来的发展方向。
198 0
什么是多态?
什么是多态?
178 0
|
数据采集 搜索推荐 安全
如何提升关键字展现?
答案是:选择竞争难度低且有一定流量的关键词。 提升关键字展现的策略 关键字展现是Google优化的一个重要组成部分。 通过提升关键字的展现,你可以在搜索引擎结果页(SERP)中获得更高的排名,从而吸引更多的潜在客户访问你的网站。 做好关键词研究 要提升关键字展现,首先需要对你的目标关键字进行深入的研究。 了解你的目标用户会搜索什么样的关键词,然后优化你的网站内容以包含这些关键词。 关键词研究不仅包括找出有哪些关键词,还包括了解这些关键词的搜索量、竞争程度等等。
169 0
如何提升关键字展现?
|
机器学习/深度学习 人工智能 搜索推荐
2022 阿里灵杰AI开发者峰会内容抢先看!
阿里灵杰AI开发者峰会将于2022年12月22日14:00准时开启线上直播。
2022 阿里灵杰AI开发者峰会内容抢先看!
|
Java 开发工具 iOS开发
Tkinter之Menu组件用法
Tkinter之Menu组件用法
372 0
Tkinter之Menu组件用法
|
Android开发 数据格式 JSON
E/错误(3907): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the o
       最近在做一个Android客户端,和Struts2搭建的服务器之间的通信,采用HTTP通信,以前做的都是简单的Android客户端,没有什么特别耗时的操作,所以这次就在Android中的耗时程序头疼,于是通过查看资料就开通了子线程,但是在子线程中却抛出异常:android.view.ViewRootImpl$CalledFromWrongThreadException。
1179 0
|
3天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!