数据库-数据库的设计

数据仓库的架构与设计 公司之前的数据都是直接传到Hdfs上进行操作,没有一个数据仓库,趁着最近空出几台服务器,搭了个简陋的数据仓库,这里记录一下数据仓库的一些知识。涉及的主要内容有: 什么是数据仓库? 数据仓库的架构 数据仓库多维数据模型的设计 1. 什么是数据仓库1.1 数据仓库的概念官方定义数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。 阅读详情

在了解数据库范式之前先了解数据库的范式

 范式:

数据库的范式是一组规则。在设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式。
关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式),越高的范式数据库冗余越小。然而,普遍认为范式越高虽然对数据关系有更好的约束性,但也可能导致数据库IO更繁忙,因此在实际应用中,数据库设计通常只需满足第三范式即可。

 一.第一范式

定义:数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,对象等非原子数据。
在关系型数据库的设计中,满足第一范式是对关系模式的基本要求。不满足第一范式的数据库就不能被称为关系数据库

拿学生表来举例不符合第一范式要求的例子 

 

可以看到学校列还能再分不符合第一范式每一列不可分割的要求

正确的列↓

快捷的辨别方式

在关系型数据库中,每一列都可以用基本数据类型表示,就天然满足第一范式
 

二.第二范式

定义:在满足第一范式的基础上,不存在非关键字段对任意候选键的部分函数依赖。存在于表中定义了复合主键的情况下。

候选键:可以唯一标识一行数据的列或列的组合,可以从候选键中选一个或多个当做表的主键(例如主键,唯一键,普通主键,外键等等)

 举个例子看下面一张表

这张表中使用学号+课程名定义复合主键来唯一标识一个学生某门课程的成绩

学生是通过学号来确定的,学生的姓名、年龄和性别和课程没有关系,即学生的信息只依赖学号,不依赖课程名;学分是通过课程来确定的,课程的学分与学生没有关系,即学分只依赖课程名,不依赖学生

对于使用复合主键的表,如果一行数据中的有些列只与复合主键中的一个或其中几个列有关系,那么就说他存在部分函数依赖,也就不满足第二范式
 对于没有复合主键的表也就天然满足第二范式

上述表可以改正为三个表:

学生表:

课程表:

成绩表:

 

不满足第二范式时可能出现的问题​:

1. 数据冗余
学生的姓名、年龄、性别和课程的学分在每行记录中重复出现,造成了大量的数据冗余。
2. 更新异常
如果要调整MySQL的学分,那么就需要更新表中所有关于MySQL的记录,一旦执行中断导致某些记录更新成功,某些数据更新失败,就会造成表中同一门课程出现不同学分的情况,出现数据不一致问题。
3. 插入异常
目前这样的设计,成绩与每一门课和学生都有对应关系,也就是说只有学生参加选修课程考试取得了成绩才能生成一条记录。当有一门新课还没有学生参加考试取得成绩之前,那么这门新课在数据库中是不存在的,因为成绩为空时记录没有意义。
4. 删除异常
把毕业学生的考试数据全都删除,此时课程和学分的信息也会被删除掉,有可能导致一段时间内,数据库里没有某门课程和学分的信息。

三.第三范式

定义:在满足第二范式的基础上,不存在非关键字段,对任一候选键的传递依赖。

因为是要描述学生信息,并且在表中定义了Id为主键,Id可以明确的标识每条学生信息​
在这个表结构中,可以看出学生的学号、姓名、年龄、性别、学院与主键Id强相关;学院电话与学院强相关;在一个表中出现了两个强相关的关系,而且这两个强相关关系又存在传递现象,即通过学生Id可以找到学生记录,学生记录中包含学院名,每个学院又有自己的电话

这种传递现象称为传递依赖,所以当前的表不满足第三范式
 

改正

学生表

学院表 

 表的设计的关系模型:

⼀对⼀关系

⼀个⽤户实体包含的属性有:⽤户昵称,真实姓名,⼿机号,邮箱地址,性别,学校

⼀个账户实体包含的属性有:登录⽤户名,密码

⽤户实体与账户实体是⼀对⼀的关系↓

 ⼀对多关系

⼀个学⽣实体包含的属性有:真实姓名,学号,年龄,性别,⼊学时间

⼀个班级实体包含的属性有:班级名,学⽣⼈数

⼀个班级中有多个学⽣所以班级实体与学⽣实体是⼀对多的关系,反过来说学⽣实体与班级实体是多对一

 

多对多关系

⼀个学⽣实体包含的属性有:真实姓名,学号,年龄,性别,⼊学时间

⼀个课程实体包含的属性有:课程名

⼀个学⽣可以选修改多⻔课程,⼀⻔课程也可以被多名学⽣选修改,所以学⽣与课程之间是多对多关系

对于多对多关系,可以使⽤中间表进⾏记录,⽐如⼀个学⽣参加了某⼀⻔课程的考试得到了相应的成绩

 

数据仓库【分层设计】 数据仓库,通过数仓建模更好的组织管理和存储数据,以便在性能、成本、效率和质量之间取得最好的平衡。 阅读详情

相关推荐

数据库领域数据仓库的事实表设计技巧

数据仓库作为企业决策支持系统的核心,用于存储和管理大量的历史数据,以支持企业的数据分析和决策制定。事实表是数据仓库中最重要的组成部分,它存储了企业的业务事实和度量值。本文章的目的在于深入探讨数据仓库中事实表的设计技巧,涵盖从基本概念到实际应用的各个方面,包括事实表的粒度选择、事实类型的确定、维度关联设计等,旨在帮助读者掌握如何设计高效、灵活且易于维护的事实表。本文将按照以下结构展开:首先介绍事实表设计的核心概念与联系,通过示意图和流程图帮助读者建立直观的认识;

2502_91592937的博客 884

三范式与ER模型

三范式(3NF)是关系型数据库设计理论的基础,它确保数据的结构化和减少数据的冗余性。三范式由数学家E.F. Codd在1970年提出,作为关系理论的一部分。三范式包括:第一范式(1NF):每一个列都不可再分,即列中存储的都是原子值,不可再分的数据项。同一个关系中,每个属性都有唯一的属性名。每个记录(或行)都有一个唯一的标识,通常是主键。每个列都不可再分,即列中存储的都是原子值,不可再分的数据项。第二范式(2NF):满足第一范式。每个非主属性都完全函数依赖于整个主键。

2303_76561497的博客 1451

数据仓库架构设计

作者:禅与计算机程序设计艺术 1.简介 数据仓库(Data Warehouse)是一个专门用于存储、集成、分析和报告关于企业所有数据的信息系统。它属于“商业智能”范畴,其主要目的是为了实现业务决策、数据驱动的决策制定,以及支持战略规划等,使得组织能够更加充分地利用信息资产,提高决策效率、增强组织绩效。

AI天才研究院 3226

数据库设计之ER图、三大范式

数据库有8种范式(Normal Form),通常只用到前3种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF),我们设计的关系数据库要满足这3种范式。3、实体之间用菱形标注联系,并标注关联关系:一对一(1,1)、一对多(1,n),多对多(m,n)。2、再画出每个实体的属性,椭圆圈出来,实体、属性之间实线连接,作为主键的属性可以画一条下划线。Entity Relationship,实体关系图。1、先画出所有实体,矩形圈出来。

chy-x 的博客 6888

构建高效数据仓库:数据库设计与实施

本文还有配套的精品资源,点击获取 简介:数据仓库是为了支持决策和数据分析而特别设计的数据库系统,它与传统OLTP系统不同,重视历史数据的存储和分析。本主题将深入探讨数据仓库的设计,结构和数据组织方式,包括需求分析、概念和逻辑数据模型设计、物理设计、数据源集成、数据清洗和元数据管理。同时,介绍数据仓库的层次结构和常见数据组织模式,如星型模式、雪花模式、星座模式和时间分区。考虑...

weixin_29363791的博客 1307

OCR开发车架号识别vin码识别系统

一、vin码识别车架号识别系统简介   vin码识别车架号识别系统,结合VIN码主机厂数据库及自身多年文字识别经验,针对机动车配置参数等信息的查询及采集业务推出的一款VIN码自动识别产品。   车架号识别vin码识别,主要应用在智能手机IOS与Android两个平台中。前端扫描查询模式,无需联网,只需扫描汽车前挡风玻璃右下角的VIN玛(车架号),即可轻松识别出车辆产地、品牌、车

OCR13512721355的博客 1433

数据库三大范式、ER图与实体类、外键约束与级联操作你了解多少?

MySQL高级

分享思想,留下痕迹。 7071

通过arcmap制作的第一张流域图

需要知道,识别河流依次需要填洼,流向,流量,栅格计算器,河流链接,河网分级.通过卫星图确定河流入口,在入口处画一个点,注意不要与其他河流相交。随后是进行对河流的筛选使用con函数,筛选流量大于100的河流。我们使用镶嵌工具-->镶嵌至新栅格 将两个数据合并。填洼后如图,随后进行流向的获得.使用流向工具。首先导入准备好的数据,可见两张图片并非一体。教程参考b站up:爱画地图的boney。惊醒栅格河网矢量化,进行河流分级。输入表面栅格数据,等待后如图。本次制作的是双峰县的流域图。输入流向数据,输出后如图。

pianmian1的博客 2226

数据库三范式、ER图基础概念整理

三范式 经过研究和对使用中问题的总结,对于设计数据库提出了一些规范,这些规范被称为范式(Normal Form) 目前有迹可寻的共有8种范式,一般需要遵守3范式即可 ◆ 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。 考虑这样一个表:【联系人】(姓名,性别,电话) 如果在实际场景中,一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF。要符合 1N...

松鼠豪的坚果 2979

Mybatis Provider注解实现批量插入

需求 借助mybatis 的provider实现一个比较通用的,批量插入数据接口。 Mapper接口 第一参数为需要批量插入的数据,第二个参数为对应实体类的class public interface BaseDao<T> { @InsertProvider(type = BaseProvider.class, method = "batchInsert") int batchInsert(@Param("lists") List<T&gt

小楼夜听雨的博客 2417

第十五章数据管理成熟度评估【6’】(DAMA-CDGA 2022年以后历年模拟题真题汇总,基本包含所有考点。)

第十五章数据管理成熟度评估【6’】(DAMA-CDGA 2022年以后历年模拟题真题汇总,基本包含所有考点。)

JasonH2021的博客 403

数据库三范式和ER图详解

第一范式:要求数据表中的字段(列)不可再分(原子性)第二范式:不存在非关键字段(非主键)对关键字段(主键)的部分依赖ps: 主要是针对联合主键,非主键不能只依赖联合主键的一部分联合主键,即多个列组成的主键第三范式:不存在非关键字段之间的传递依赖。

weixin_61898502的博客 579

matlab 计算点云粗糙度

A Correspondence Framework for ALS Strip Adjustments based on Variants of the ICP Algorithm

点云侠的博客 1828

数据库课程设计mysql——个人博客数据管理系统

本篇是我大二数据库课程的结课作业,想分享给大家,文中理解有误的地方,请多多指正~ 文章目录需求分析概念结构设计抽象出系统的实体2.2 设计E-R图全局E-R图逻辑结构设计数据库物理设计与实施创建数据库建立和管理基本表建立基本表与管理基本表插入数据建立和管理视图建立视图管理视图访问数据库数据查询数据更新数据库维护备份数据库创建触发器总结与心得 需求分析 随着互联网的发展,越来越多的人拥有了自己的个人博客。但是大多数采用的是网上别人做好的博客模板,众所周知,网上的模板并不是单独为个人而定制,而是面向大多数人

2302_77250325的博客 8734

【Envi遥感图像处理】022:envi时空分析工具的使用

本文介绍了ENVI软件中的时空分析工具应用,以美国拉斯维加斯1975-2014年的9期Landsat数据为例。主要内容包括:1)时空分析概念,即对空间相关时间序列数据的建模分析;2)构建时序数据流程,通过添加栅格、时间排序等步骤生成.series格式时序文件;3)时序数据查看方法,包括动画播放、添加注记及保存视频;4)多源数据统一处理工具,解决坐标系、空间范围不一致问题。该工具可用于冰川变化、植被覆盖等时空变化研究。

智慧空间实验室 270

SAP 交货成本(运费)

交货成本: 业务场景: 有些产品或供应商,会产生交货成本(运费、关税等) 业务模拟(以运费为例): 1、运费在采购订单体现:计划运费 ME21N创建采购订单,并且包含运费: MIGO收货时: 由上可知,MIGO时运费最终体现在库存(存货)科目中(V),或者价格差异中(S计价时)。 MIRO发票校验: 运费最终体现在单独科目中: 后台配置: 运费在发票时候...

willieyuan的博客 1万+

数据仓库之模型设计

数据仓库(模型设计) 一、数据仓库与数据库的区别 1、数据仓库是集成的,数据库为单一的业务提供服务。 2、BI结构:数据整合层、数据服务层、应用分析层、信息展现层 3、数据层库结构 ODS(临时存储层),一般都是贴源设计、业务数据库是什么,ODS层就是什么 PDW/DW(数据仓库层),将年月日,拆分成年、月、日字段,一...

永青技术博客 1万+

人形机器人构成及成本估算(附报告)

这些执行器本身由螺杆、减速器、电机、传感器、滚珠轴承和编码器等组件构成。实现线性与旋转运动互转。人形机器人的运动系统可以由电驱动、液压驱动或气动驱动组成,但由于电驱动具有更高的精度和更快的响应速度,正在成为主流设计方案。执行器:NSK、THK、Harmonic Drive、Leaderdrive、Nidec、Moons。由螺杆、减速器、电机、传感器、轴承和编码器组成(如上为Tesla Optimus执行器设计示意)。传感器:Keyence、Robosense、Sensata、ATI、TE、Sony。

具身机器人和通用AI 1773

数据仓库的概念与设计

目录 一、数据仓库概念 二、数据仓库建模方法 1.ER模型 2.维度模型 2.1事实表 事实类型 2.2维度表 三、数据仓库设计 一、数据仓库概念 数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据,借助数据仓库的分析能力,企业可从数据中获得宝贵的信息进而改进决策。同时,随着时间的推移,数据仓库中积累的大量历史数据对于数据科学家和业务分析师也是十分宝贵的。 数据模型就是数据组织和存储方法,它强调从业务、数据存取和...

lslslslslss的博客 2565

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

数据库设计与数据仓库设计区别

数据库设计与数据仓库设计区别 针对数据库设计一般用的是三范式。因为数据库的数据会用于频繁的增删改查,因此出于减少系统压力考虑,会尽量减少冗余,从而提升系统频繁读写数据的效率。而星型、雪花型则是数据仓库的设计模式。与数据库的使用目的不同,数据仓库更多的是存储历史数据,不会有频繁的读写。其主要是用于从历史数据中进行分析,进而获取指导性的生产指引,生成报表等等。而这时数据库设计中的范式拆表以提升效率的方法这时却会适得其反(因为历史数据的量相当庞大,而往往数据分析、BI等又需要从多个表中检索数据来进行,这时大表

m0_37259237的博客 732

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Chat2DB项目中的电商数据库设计解析

Chat2DB项目中的电商数据库设计解析 【免费下载链接】Chat2DB chat2db/Chat2DB: 这是一个用于将聊天消息存储到数据库的API。适合用于需要将聊天消息存储到数据库的场景。特点:易于使用,支持多种数据库,提供RESTful API。 ...

gitblog_00684的博客 514

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数据库基础:DB 设计

实体识别从业务需求文档提取核心名词或名词短语(如“用户”“订单”),结合业务流程验证边界。电商系统通常包含用户、商品、订单、支付四类核心实体。属性规范化属性需满足原子性,不可再分。例如“用户地址”拆分为“省”“市”“街道”“邮编”。数据类型(如邮编VARCHAR(6)约束条件(如手机号设UNIQUE默认值(如created_at默认主键设计策略优先使用代理主键(如自增),避免业务主键(如身份证号)因规则变更引发问题;复合主键仅用于多对多关联表(如学生选课表用),单一表禁止使用。

weixin_74399967的博客 1770

openGauss数据库Database和Schema设计

openGauss中可以使用Database和Schema实现业务的隔离,区别在于Database的隔离更加彻底,各个Database之间共享资源极少,可实现连接隔离、权限隔离等,Database之间无法直接互访。Schema隔离的方式共用资源较多,可以通过grant与revoke语法便捷地控制不同用户对各Schema及其下属对象的权限。

m0_60569209的博客 405

数据仓库架构设计的一点概念

1、 STAGE层 业务系统的数据接入到数据仓库时,首先将业务数据仓储到STAGE层中,Stage层作为一个临时缓冲区,并屏蔽对业务系统的干扰。 STAGE层中的表结构和数据定义一般与业务系统保持一致。 Stage中的数据可以每次全量接入也可以每次增量接入,一般都有会数据老化的机制,不用长期保存。 Stage的数据不会对外部开放。 2、 ODS层 ODS才是数据仓库真正意义上的基础数据,数据是被清...

景山编程-顺道编程 1067

数据库设计(Database Design))

1.3多对多的relationship可以自带属性,把两个表的候选码拿出来+relationship自带的属性构成一张表。- 1.1尽可能把数据描述为属性,然后不需要进一步得描述,属性只和自己的实体有关系(除非是外键),一个实体可以拥有多个属性。实体,除了名称(PK),还应该有其他属性,就是实体至少应该有一个非主属性。多对多的联系中,就把两端的属性拿出来和联系带有的属性一起形成一张表。表格要有简单的意义,数据少量复制,尽可能少的空值,好的一个表现。前者就是最大差异(子类),后者就是最小差异(父类)。

m0_74748977的博客 1490
上一篇: sql数据库--CRUD增删改查
下一篇: 数据库-联合查询(内连接外连接),子查询,合并查询
刘 大 望
博客等级 码龄2年 896粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值