首页 > 数据库 >软件设计__ 数据库逻辑结构设计

软件设计__ 数据库逻辑结构设计

时间:2022-11-03 10:02:16浏览次数:55  
标签:__ 事务 软件设计 数据库 用户 ER 结构设计 属性

难度:★★☆

案例引入
YourTour系统(旅游线路预定系统)
YourTour是一个为旅行社和其目标顾客提供服务的系统。它能够将多个景点组成一条旅游线路,而且能够为所有参加线路的游客提供所需的住宿及往返长交通预定。
用例图
image

1. 实体关系建模(回顾)

实体
一组具有相同属性的对象。属性是实体包含的元素。
是需求分析产生,经用户确认的数据集合。
关系
实体之间特有的关联。
关系有名称定义和数量级约束(1:1,1:n,n:m)。
实体关系图(ER图)

2. 数据库逻辑结构设计

把概念结构设计(ER图)转换为与选用的DBMS(数据库管理系统)产品所支持的数据模型相符合的逻辑结构(模式)。
目前使用的数据库基本都是关系数据库,因此要将ER图转换为关系模式,并进行优化。

数据库逻辑结构设计决定了数据库及其应用的整体性能。

3. 数据库逻辑结构设计的任务

  1. 将ER图映射为表。
    创建表、属性及关系的基本描述。

  2. 用规范化方法检查表结构(第三范式)。

  3. 验证数据表是否支持用户事务,满足业务规则约束
    用户事务:多记录增加或删除;
    业务规则:数据、属性域约束;实体完整性;多样性;参照完整性等。

1)将ER图映射为表。

ER图 数据库
实体
属性 字段
标识属性 主键(PK)
一般属性 表字段
复合/多值属性 表及关系

关系
1:1 及 1:n 关系 \(\to\)表关系

n:m 关系 \(\to\)关系表

image

image
image

2)用规范化方法检查表结构(第三范式)。

检查并修改表结构,以符合第三范式(3NF)。

1NF:数据库表中的字段都是单一属性的,不可再分。
2NF:数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖。
3NF:数据表中不存在非关键字段对任一候选关键字段的传递函数依赖。

3)检查数据表是否支持用户事务,满足业务规则约束。

用户事务
目的:保证数据库逻辑结构设计,能够满足用户事务在数据方面的需求。

检查方法:根据用户事务的数据需求,(设计复杂用例)

  • 检查数据在一个或多个表中是否可存储;
  • 如果存储在多个表中,检查这些表是否能够通过主/外健机制连接起来。

对业务规则约束的检查

目的:保证数据库表对业务规则约束的支持。
检查项目:

字段数据类型、字段长度;
字段是否允许为空;
字段实际意义约束。

用户事务的检查
保证数据库逻辑结构设计,能够满足用户事务在数据方面的需求。
业务规则的检查
保证数据库表对业务规则约束的支持。

在对用户事务、业务规则约束的检查过程中,优化和细化设计方案。
提高质量,符合用户需求。

标签:__,事务,软件设计,数据库,用户,ER,结构设计,属性
From: https://www.cnblogs.com/kingwz/p/16853451.html

相关文章

  • HDFS集成Kerberos的一些问题记录
    参考的两个教程:https://blog.csdn.net/mnasd/article/details/126954062https://blog.csdn.net/weixin_47677170/article/details/125668673 安装hadoop的教程https:......
  • 打不开 github 的方法与推荐基于Vue3与Element plus的后台管理系统
    一、打不开github的方法1、打开本机hosts文件(C:\Windows\System32\drivers\etc)2、然后在hosts文件里的末尾放入一下两个IP地址:#GitHubStart140.82.114......
  • WEB、Internet、WAN、LAN
    WEBWEB(WorldWideWeb)即全球广域网,也称为万维网,它是一种基于超文本和HTTP协议的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务......
  • Vue面试题43:Vue3性能提升体现在哪些方面?(总结自B站up主‘前端杨村长’视频,仅供自用学习
    分析vue3在设计时有几个目标:更小、更快、更友好,这些改进多数和性能相关,因此可以围绕介绍;思路总述和性能相关的新特性;逐个说细节;能说点原理更佳;回答范例......
  • 华为交换机策略路由配置
    [S5720-core]acl2011rule5permitsource192.168.4.1310[S5720-core]trafficclassifiermail-to-idcif-matchacl2011[S5720-core]trafficbehaviormail-to-idcre......
  • app 好用的手机端开发调试工具插件 vconsole vue3
    效果:可以在手机上看控制台的内容   $npminstallvconsole  在main.js里引入//添加移动端log查看调试器importVconsolefrom'vconsole';letvConso......
  • sqlserver查询语句SELECT
    SELECT查询语句数据查询是数据库的核心操作,其功能是指根据用户的需要从数据库中提取所需数据,通过SQL的数据操纵语言的SELECT语句可以实现数据库数据的查询。SELECT语句是......
  • 设计模式之代理,手动实现动态代理,揭秘原理实现
    开心一刻周末,带着老婆儿子一起逛公园。儿子一个人跑在前面,吧唧一下不小心摔了一跤,脑袋瓜子摔了个包,稀里哗啦的哭道:“爸爸,我会不会摔成傻子!”我指了指我头上的伤痕安......
  • C# Interlocked 类
    【前言】在日常开发工作中,我们经常要对变量进行操作,例如对一个int变量递增++。在单线程环境下是没有问题的,但是如果一个变量被多个线程操作,那就有可能出现结果和预期不一......
  • Singleton、Scoped、Transient 的应用情景有哪些
    对于方法都是线程安全的类型,一般使用单例。对于对象依赖了处理上下文,或者使用了有限资源(如数据库连接),一般使用Scoped或者Transient。Scoped、Transient的区别是你在同一个......