数据库笔记Ch04----概念数据库的设计(1)

news2024/9/29 3:23:35

前三章我们学习了如何使用DBMS我们学会了增删改查,插入数据库,创建视图...

这一章是我们的数据库刚刚建立,只有一个需求,需要根据用户的需求来创建数据库,每个表有哪些属性,参照关系是什么,主键是什么.......

数据库的设计过程

  • 概念设计
  • 逻辑设计
  • 物理设计

具体解释一下,概念模式:比如我想用创建STudent和SC两个表,通过学号作为参照关系,学生通过选课这个操作建立起和课程之间的联系,每个学生的课程都会有一个成绩,这都是一个个的概念。逻辑设计:我是想用postgres的table还是文档,就建立相应的数据表。物理设计,比如建立索引让运行的效率尽可能地高

实体联系模型---ER模型(概念设计)

本质是一个建模工具,图形化方法---ER图

ER基本概念/术语

 还是以一个实际的例子来理解这些概念

 实体:现实世界中客观存在的事物、对象,所有大写的单词都是实体。

属性:用来刻画实体,比如员工的序号、姓名、出生日期,类似于查询语言中的键(Key)

                                                那么都有哪些属性?属性的分类

 多值属性:一个员工可以有两个电话号 派生属性:BMI可以通过身高和体重计算出来

实体和实体型:对象和类 我和学生 部门

同一类的实体基本属性相同

实体型的ER图表示 案例分析设计

规则(rule)

 案例

部门是一个实体,有许多个部门ABC,他们共同的类型是Department,起这么一个名字,我们还发现每个部门有姓名、编号、管理这个部门的经理,还有经理上任的日期,每个部门有很多的地点

  •  画红字的表示抽出来的属性
  • 部门有一个属性是编号所以画出来一个圈,连上去表示number是department的一个属性,并且部门是是一个键属性因为每个部门的编号不一样
  • 人会重名,但是部门一般不能重名,所以部门一般也可以作为键值。
  • 一个部门可以有多个loactions工作地点,所以locations可以有多个值,是多值属性。
  • 由于不同部门的经理相同并且只能有一个经理,所以只能画单圈。

 每一个部门都会有很多个项目,每个项目都有唯一的名称唯一的编号,和一个唯一的地点(但不同的项目可以一个地点,一个部门可以管多个项目

 每个员工可以为一个部门工作,但是可以work on多个项目,works on很特殊,他既是一个符合属性,也是一个多值属性

DEPENDENT类

 与联系相关的概念

刚才我们只能刻画一个实体类的属性,但是不同实体类之间的联系我们没有说明,每一个实体类是独立的,如何建立起类似学生和课程之间的联系是我们需要思考的一个问题。部门和项目之间的管控关系,学生和老师的教课联系........

 基本概念(联系、联系型、联系型的度、联系集)

毕业时哈工大公司个人之间是三元联系。

联系型的表示

体现一种直接管理的方式

 上方未修改只是一种描述,但是要体现员工管理项目的关系不如直接换成这种联系型的更好 刻画员工和项目之间的参与关系,原来设计的很繁琐还要整多值关系,理解起来也不是很直接。

同一实体型的关联

同一个部门可能存在主管关系 员工和员工之间的关系,员工的主管也是员工,这种画法中间有字,

 联系型的约束

比如夫妻关系是唯一的,校长和老师的关系是一对多的关系,学生和老师的关系是一对多的关系,如何区分,在线上写数字。注意方向不要反

 可视化分析

 依赖型约束

老师和学生通过讲课建立联系:

学生都必须要上课,是全部参与,每个学生至少参与到一个联系中;但不是所有的老师都要讲课,有的老师只负责科研,所以老师部分是部分参与 部分参与画单线 全部参与画双线

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

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

相关文章

一.Jetpack全套

Jetpack全套一.Jetpack介绍1.特性:2.分类:二.应用架构三.LifeCycle:1.简介2.简单使用3.实战:Dialog内存泄漏四.VideModel1.介绍2.简单使用3.AndroidViewModel使用4.使用viewmodel实现fragment直接数据共享五.LiveData1.介绍2.常用方法3.使用场…

车载 OTA技术概念

1 OTA技术概念 随着高级辅助驾驶的发展和自动驾驶的引入,汽车变得越来越智能,这些智能汽车被软件控制,装有巨量的软件程序,当出现一个软件程序问题或者更新时,如果按照传统的解决方式,那都将是一项很繁重的…

【深度学习】基于Hough变化的答题卡识别(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳座右铭&#…

云开发--实现发送邮件+短信+链接跳转小程序功能

目录 1、小程序实现发送邮件 准备一个qq邮箱,并启动SMTP服务 确定小程序云开发环境,并新建云函数 2、小程序实现发送短信 确定应用 确定签名 确定模板 编写云函数-发送短信 3、链接跳转小程序 H5 配置 生成 URL Link 学习记录: …

【获奖案例巡展】科技向善之星——中航电梯5G+大数据管理平台

为表彰使用大数据、人工智能等基础软件为企业、行业或世界做出杰出贡献和巨大创新的标杆项目,星环科技自2021年推出了“新科技 星力量” 星环科技科技实践案例评选活动,旨在为各行业提供更多的优秀产品案例,彰显技术改变世界的力量&#xff0…

网络编程(python)

文章目录一、网络基础(IP,端口,TCP等)二、TCP网络应用可开发流程三、HTTP协议和静态Web服务器四、搭建Python自带静态Web服务器一、网络基础(IP,端口,TCP等) IP地址:标识…

企业的数据中台到底指的是什么?_光点科技

随着数据技术的不断发展和企业数据应用的广泛应用,越来越多的企业开始将数据中台作为数字化转型的核心战略之一。那么,企业的数据中台到底指的是什么呢? 数据中台是一种以数据为核心的企业数字化转型架构,旨在通过数据的汇聚、整合…

Lego- 美团接口自动化测试实战(详细解析)

目录:导读 一、概述 1.1 接口自动化概述 1.2 提高 ROI 1.3 Lego 的组成 二、脚本设计 2.1 Lego 的做法 2.2 测试脚本 2.3 配置文件 三、用例设计 3.1 一些思考 3.2 Lego 接口自动化测试用例 3.3 参数化 3.4 前后置动作 3.5 执行各部分 四、网站功能 …

软件测试员----面试,你准备好了么?

最近有机会做一些面试工作,主要负责面试软件测试人员招聘的技术面试。 之前一直是应聘者的角色,经历了不少次的面试之后,多少也积累一点面试的经验,现在发生了角色转变。初次的面试就碰到个工作年限比我长的,也没有时间…

c++11 标准模板(STL)(std::stack)(四)

定义于头文件 <stack> template< class T, class Container std::deque<T> > class stack;std::stack 类是容器适配器&#xff0c;它给予程序员栈的功能——特别是 FILO &#xff08;先进后出&#xff09;数据结构。 该类模板表现为底层容器的包装…

Spark学习——DataFrame清洗HDFS日志并存入Hive中

目录 1.开启Hadoop集群和Hive元数据、Hive远程连接 2.配置 3.读取日志文件并清洗 4.单独处理第四列的数据——方法一&#xff1a; 5.单独处理第四列的数据——方法二&#xff1a; 6.单独处理第四列的数据——方法三&#xff1a; 7.数据清洗结果展示 8.存入Hive中 9.…

The 2021 China Collegiate Programming Contest (Harbin) D. Math master

题目链接 题解 2632^{63}263大概是101910^{19}1019那么一共有19位需要讨论, 每一个位数各有保留和删除两种状态, 全部状态就是2182^{18}218种 因为每一位数都有两种状态, 使用二进制数表示每个状态, 正好能全部表示, 在二进制位数下1表示保留, 0表示删除(反过来也一样) 使用二…

分布式版本控制工具 —— Git

一、Git 基本介绍 1.1 相关概念 1️⃣ 首先&#xff0c;我们要知道什么是Git&#xff1f; Git 是一个免费、开源的版本控制系统&#xff0c;它可以有效地跟踪文件的更改&#xff0c;协调多人在同一个项目上的开发&#xff0c;以及管理不同版本的代码。 Git 最初是由 Linus …

微服务架构下认证和鉴权理解

认证和鉴权 从单体应用到微服务架构&#xff0c;优势很多&#xff0c;但是并不是代表着就没有一点缺点了。 微服务架构&#xff0c;意味着每个服务都是松散耦合的。因此&#xff0c;作为软件工程师和架构师&#xff0c;我们在分布式架构中面临着安全挑战。微服务对外开放的端…

PLE详解

具体的实践中&#xff0c;我们主要参考了腾讯的PLE(Progressive Layered Extraction)模型&#xff0c;PLE相对于前面的MMOE和ESMM&#xff0c;主要解决以下问题&#xff1a; 多任务学习中往往存在跷跷板现象&#xff0c;也就是说&#xff0c;多任务学习相对于多个单任务学习的…

Linux/Ubuntu服务自启动原理剖析及三种实现方式

面向Linux系统&#xff0c;并非只是Ubuntu&#xff1b;系统版本不同&#xff0c;配置上可能有所不同。 1、自启动的原理剖析 1.1、 运行等级 Linux分了7个运行等级&#xff0c;分别用数字0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6表示…

【Python】【进阶篇】十八、Python爬虫获取动态加载数据

目录十八、Python爬虫获取动态加载数据18.1 确定网站类型18.2 影片详情信息18.3 影片总数量18.4 影片类型与类型码18.5 编写完整程序十八、Python爬虫获取动态加载数据 如何获取电影“分类排行榜”中的电影数据&#xff08;电影&#xff09;&#xff0c;比如输入“剧情”则会输…

用EasyX图形库画一个哆啦A梦

继续说图形库&#xff0c;加一点实战用图形画图&#xff08;用来巩固代码&#xff09;&#xff1a; rectangle这个函数 四个参数&#xff0c;左上角坐标的x,y值&#xff0c;右下角坐标的x,y值&#xff1b;因为只要有两个点&#xff0c;就可以以它们的横坐标之差为长&#xff…

三范式建模和维度建模,到底该选哪一个?

编辑导语&#xff1a;当你需要从头开始设计数据仓库时&#xff0c;你会选择哪种建模方式&#xff1f;也许&#xff0c;你会从三范式建模和维度建模二者中选择。但是这二者有其各自的适用范围&#xff0c;具体选择哪种方法&#xff0c;还需要回归至业务层。本篇文章里&#xff0…

day-004-链表-两两交换链表中的节点、删除链表的倒数第N个节点、链表相交、环形链表II

两两交换链表中的节点 题目建议&#xff1a;用虚拟头结点&#xff0c;这样会方便很多。 题目链接/文章讲解/视频讲解 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* Li…