数据库原理(数据库设计)——(3)

news2024/12/24 9:56:25

一、数据库设计概述

1.数据库设计的基本任务和目标

基本任务

        根据用户的信息需求、数据库操作需求,设计一个结构合理、使用方便、效率高的数据库。

设计目标

  • 满足用户的应用要求;
  • 准确模拟现实世界;
  • 能背某个DBMS(数据库管理系统)接受;
  • 具有良好的性能,较好的质量;

2.数据库设计的方法

(1)新奥尔良方法

        该设计方法认为数据库设计应分六个阶段进行,者六个阶段分别是需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施以及数据库运行和维护。

(2)基于E-R模型的数据库设计方法

(3)基于3NF的设计方法

(4)对象定义语言方法

二、需求分析(没啥用不考,想了解的可以在网上自行查阅)

三、E-R图(数据库概念结构设计)

1.概念结构的表示

  • 实体集用长方形表示(这里可以看作是一个关系表);
  • 属性用椭圆形表示,就是关心表中每一列的属性名;
  • 联系用菱形表示,菱形内要写明联系名;

这里联系又分为三种:一对一、一对多、多对多,下面用实际案例进行画图举例:

(1)一对一

        一个单位的总负责人只有一个,一个人也只能当一个单位的总负责人,这时候单位和总负责人的关系是一对一的,如图:

(2)一对多

        一个部门有多个员工,一个员工只能属于一个部门,此时部门和员工的关系属于一对多,如图:

(3)多对多

        一个项目有多个员工,一个员工可以同时进行多个项目,此时员工和项目的关系就是多对多的,如图:

2.局部E-R图设计

     这里在属性上有三点需要注意:

  • 属性不能再具有需要描述的性质(不能进行细分);
  • 属性不能与其他实体集有联系(不用再E-R图上画外键id);
  • 对于同一个对象,如果需要进一步描述该对象,并需要处理该对象于其他实体间的联系,可以考虑将该对象作为实体。

对于后两点,这里进行举例,

错误示范:

正确写法:

 

这里专业中应还有其他属性,这里图中没有体现,但要注意。

3.全局E-R图设计 

       将局部E-R图合成,则为全局E-R图,但再合成的时候可能会产生冲突,这其中主要冲突有三种:

(1)属性冲突。包括域冲突和属性取值冲突;

(2)命名冲突。有同名异义冲突和异名同义冲突;

(3)结构冲突。结构冲突又有三种情况:

  • 同一对象在不同的应用中具有不同的抽象;
  • 同一实体在不同的局部E-R图中属性组成不一致;
  • 实体之间的联系在不同的局部E-R图中联系的名称、属性不同或呈现不同的类型。 

四、一些概念和其他问题

1.弱实体集和强实体集

        强实体集(Strong Entity Set)是指具有自己唯一标识符的实体集。这意味着强实体集中的每个实体都可以被唯一地识别和区别于其他实体。

        弱实体集(Weak Entity Set)则不具备自己的唯一标识符。它依赖于与其相关的强实体集来确定其唯一性。弱实体集的存在必须与其依赖的强实体集相关联。

        简单来说,就是强实体集可以单独存在,而弱实体集必须靠强实体集才能存在,如专业和专业课,此时专业就是强实体集,专业课就是弱实体集,没有专业就没有专业课。对于弱实体集,必须满足以下限制:

  • 强实体集和弱实体集的联系类型只能是一对一或一对多的;
  • 弱实体集中的每个实体都参与到联系集中至少一个联系中。

2.依赖实体集

        依赖有两种约束情况:

  • 实体集与实体集之间的依赖约束,即弱实体集依赖于强实体集;
  • 实体集与联系集之间的依赖约束,即实体的存在依赖于联系集中的联系。

3.实体的子类型和超类型

        简单的说就是关系之间的继承,E-R模型使用实体集的继承和ISA联系来描述实体集特殊化和泛化的概念。如图,描述了学生集的层次关系:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1832123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ARMv8/ARMv9 硬件加速系列 3.3 -- SVE LD2D 和 ST2D 使用介绍】

文章目录 SVE 多向量操作LD2D(加载)LD2D 操作说明LD2D 使用举例ST2D(存储)ST2D 使用举例ST2D 存储示例代码ld2d 和 st2d 小结SVE 多向量操作 在ARMv8/9的SVE (Scalable Vector Extension) 指令集中,st2d和ld2d指令用于向量化的存储和加载操作,具体地,它们允许同时对两个…

ezButton-按钮库

ezButton-按钮库 使用按钮时,初学者通常会遇到以下麻烦: Floating input issue 浮动输入问题Chattering issue 抖动问题Detecting the pressed and released events 检测按下和释放的事件Managing timestamp when debouncing for multiple buttons 在多…

【乳业巨擘·数字革命先锋】光明乳业:上市公司科技蜕变,搭贝低代码引领未来新纪元

在这个由科技编织的未来世界里,光明乳业股份有限公司以巨人之姿,傲立于乳业之巅,以其无与伦比的胆识与魄力,引领了一场震撼业界的数字化革命。与低代码领域的创新领袖——搭贝的强强联合,不仅标志着光明乳业在数字化转…

通用视频模板解决方案,视频生产制作更轻松

对于许多企业来说,视频制作往往面临着技术门槛高、制作周期长、成本投入大等难题。为了解决这些问题,美摄科技凭借其领先的跨平台视频技术和完善的工具链,推出了面向企业的视频通用模板解决方案,为企业视频制作带来了全新的革命性…

【C#项目】使用百度ai人脸库实现人脸识别

1. 项目介绍 本项目利用百度AI的人脸识别技术,开发了一个可以进行人脸识别的应用程序。项目涉及网络连接、文件处理、图像处理、数据库管理及音视频处理等多个技术领域。本文将详细介绍项目的整体架构和实现过程。 2. 技术栈 本项目使用了以下技术: …

xxe漏洞学习

一、什么是xxe漏洞 XXE就是XML外部实体注入,当允许引用外部实体时, XML数据在传输中有可能会被不法分子被修改,如果服务器执行被恶意插入的代码,就可以实现攻击的目的攻击者可以通过构造恶意内容,就可能导致任意文件读…

C#聊天室客户端完整③

窗体 进入聊天室界面(panel里面,label,textbox,button): 聊天界面(flowLayoutPanel(聊天面板)): 文档大纲(panel设置顶层(登录界面),聊天界面在底层) 步骤:设置进入聊天室→输入聊天→右边自己发送的消息→左边别人发的消息 MyClient.cs(进入聊天室类) …

MySQL Explain 关键字详解

概述 explain 关键字可以模拟执行 sql 查询语句,输出执行计划,分析查询语句的执行性能 使用方式如下:explain sql explain select * from t1执行计划各字段含义 1. id 如果 id 序号相同,从上往下执行如果 id 序号不同&#…

项目实施文档(Word原件项目直接套用)

软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施 获取方式:本文末个人名片直接获取。

关于el-date-picker组件,如何隐藏时间组件底部清空按钮

工作中可能会遇到el-date-picker组件隐藏时间组件底部清空按钮 分为两种 : 如果你想要实现全部的el-date-picker的清空隐藏 和 某一个页面的el-date-picker的清空隐藏 1 全局隐藏 步骤1:在element-ui.scss中添加如下代码: .el-picker-pane…

Excel VLOOKUP 使用记录

Excel VLOOKUP 使用记录 VLOOKUP简单使用 VLOOKUP(lookup_value,table_array,col_index_num,[range-lookup]) 下面是excel对VLOOKUP 的解释 lookup_value(查找值):要匹配查找的值 table_array(数据表)&#xff1…

想上币的项目方怎么去选择交易所

在区块链和加密货币蓬勃发展的今天,许多项目方都渴望通过交易所上线其代币,以扩大影响力、提升流动性和市场认可度。然而,选择合适的交易所并非易事,它关乎项目的未来发展和市场地位。那么,对于有上币意向的项目来说&a…

从0进入微服务需要了解的基础知识

文章目录 系统架构演化过程为什么要了解系统架构的演化过程技术发展认知技术选型与创新 演变过程单体架构分层-分布式集群微服务 分布式\集群\微服务 微服务中的核心要素-拆分原则项目拆分与复杂度微服务的拆分维度有哪些小结 微服务中的核心要素服务化进行拆分后一定是微服务&…

Flink 窗口函数

一、Window 概述 Flink 流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而 window 是一种切割无线数据为有限块进行处理的手段。 二、Window 分类 Window 可以分为两类: Count…

利用Python语言调用讯飞星火认知大模型接口实战指南

什么是API接口 API(应用程序编程接口)是一组规则,允许不同的软件系统相互通信。通过API,开发者可以访问外部系统的功能和数据,而无需了解其内部实现。 API接口就像一座桥梁,连接应用程序和服务。例如&…

车企高管组团“出道”,汽车营销已经Next level了?

汽车进入了“卷”老板、“卷”高管的时代! 谁能想到,雷军凭一己之力,在一定程度上重塑了汽车的竞争策略。价格战之外,车市又开启了流量之战。 云略曾在《雷军20天吸粉500w!……》一文中,提到继雷军之后&…

敏捷开发时代,彻底结束了

最近,我收到一位读者的私信,他最近“内耗”得非常厉害,他可能一时兴起把我的私信当作了吐槽箱。 他们公司一直实行敏捷的管理模式,复盘发现了一个问题:发布与迭代具有强相关性,一个迭代就发布一次&#xf…

网络安全 DVWA通关指南 SQL Injection(SQL注入)

DVWA SQL Injection 文章目录 DVWA SQL InjectionLowMediumHighImpossible SQL注入漏洞基本原理 Web应用程序对用户输入的数据校验处理不严或者根本没有校验,致使用户可以拼接执行SQL命令。 可能导致数据泄露或数据破坏,缺乏可审计性,甚至导致…

RockChip Android12 Settings一级菜单

一:概述 在之前的文章中对Android8.1 Settings的流程进行了说明,本章将针对Android12 Settings一级菜单的加载逻辑进行详细说明,Settings版本之间的差异不是很大,有兴趣的同学可自行学习,本文不在做赘述。 Android8.1 Settings说明:RockChip Android8.1 Settings-CSDN博…

浏览器开发公司Brave 将自己的搜索结果与其 Leo AI 助手集成

Brave Software是一家开发浏览器的公司,其主要产品是Brave浏览器。Brave浏览器基于Chromium项目开发,具有高性能和隐私保护的特点。此外,Brave浏览器还提供了“off record”模式,允许用户在不记录浏览历史的情况下使用浏览器。关于…