数据建模标准-关系建模
数据模型定义:DAMA数据治理体系中将数据模型定义为一种文档形式,数据模型是用来将数据需求从业务传递到IT,以及在IT内部从分析师、建模师和架构师到数据库设计人员和开发人员的主要媒介;
作用:记录数据需求和建模过程中产生的数据定义;
数据建模方法:
常见的数据建模方法是关系建模、维度建模、面向对象建模、基于事实建模、基于时间建模和非关系型建模;

本章重点梳理关系建模方法:
关系建模定义:是一种通用的数据建模方法,关系建模的基本思想是通过将数据表示为关系模型,提高数据的结构化和可理解性;
关系建模按照陈氏符号表示法主要涉及以下几个步骤:
- 识别实体:实体的识别逻辑参考5W1H逻辑;

- 识别实体的主键:根据实体的定义和标准,确定存储颗粒度,识别实体的主键;
- 定义属性:为每个实体定义属性,也就是实体所对应的描述性标签;
- 确定关系:关系类型可以分为以下几类
a.多对多的关系类型:不同的原材料加工成多种产成品;

b.1对多的关系类型:多个原材料只能用于一个产品的生产;

c.1对1的关系类型:一个原材料加工成一个产成品;

基于识别出来的实体、关系、属性设计相关的数据模型;
实例:
以下是在线书店的ER图示例:
1.识别出的实体包含:客户、订单、书
2.识别实体的主键:客户的主键是客户id,订单的主键时订单id,书的主键是书的id;
3.定义属性:
a.客户的属性包含名称、email、密码、地址;
b.订单的属性包含订单日期、订单金额、订单的采购数、订单总价格;
c.书的属性包含标题、作者、ISBN、书的单价、书类型;
4.确定关系:
客户和订单的关系:1对多;
订单和书的关系:多对多;

陈氏符号(Chen's Notation)是由美国计算机科学家彼得·陈(Peter Chen)在1976年提出的,用于描述实体-关系(ER)模型的一种图形表示方法。这种表示方法在数据库设计和信息系统分析中被广泛使用。以下是陈氏符号的一些基本元素和规则:
- 实体(Entity):
- 实体用矩形表示,矩形内写上实体的名称。
- 实体可以是现实世界中的对象,如人、地点、物品等。
- 属性(Attribute):
- 属性用椭圆表示,并通过线连接到它们所属的实体。
- 属性是描述实体特征的数据项,如人的名字、年龄等。
- 关系(Relationship):
- 关系用菱形表示,并通过线连接到它们涉及的实体。
- 关系描述实体之间的联系,如“学生”和“课程”之间的“选课”关系。
- 键(Key):
- 键是用于唯一标识实体实例的属性或属性集。
- 在陈氏符号中,主键通常用下划线标记。
- 基数(Cardinality):
- 基数描述实体间关系的数量约束,如“一个学生可以选多门课程,但一门课程可以被多个学生选”。
- 基数可以用“1”、“0..1”、“*”等符号表示。
- 参与度(Participation):
- 参与度描述实体在关系中的角色,可以是“部分参与”(Partial Participation)或“全参与”(Total Participation)。
- 参与度可以用“O”(全参与)和“o”(部分参与)表示。
- 弱实体集(Weak Entity Set):
- 弱实体集是指没有足够属性来形成主键的实体集。
- 弱实体集用双线矩形表示,并且它们的关系称为识别关系。
- 外键(Foreign Key):
- 外键是用于在两个实体集之间建立联系的属性或属性集。
- 在陈氏符号中,外键通常用箭头指向它们所指向的实体。
相关文章:
数据建模标准-关系建模
数据模型定义:DAMA数据治理体系中将数据模型定义为一种文档形式,数据模型是用来将数据需求从业务传递到IT,以及在IT内部从分析师、建模师和架构师到数据库设计人员和开发人员的主要媒介; 作用:记录数据需求和建模过程中产生的数据…...
Qt日志库QsLog使用教程
前言 最近项目中需要用到日志库。上一次项目中用到了log4qt库,这个库有个麻烦的点是要配置config文件,所以这次切换到了QsLog。用了后这个库的感受是,比较轻量级,嘎嘎好用,推荐一波。 下载QsLog库 https://github.c…...
07. Hibernate 会话工厂(SessionFactory)
1. 前言 Hibernate 的核心价值观是:开发者们!做你们应该做的。脏的、累的、没技术含义的由本尊来做。 本节课和大家一起好好的聊聊 Hibernate 的核心组件之一:会话工厂(SessionFactory)。 通过本节课,你…...
使用Nginx实现高效负载均衡
概述 Nginx是一款高性能的HTTP和反向代理服务器,广泛用于Web服务的负载均衡。它能有效分发流量至多个后端服务器,提高网站的可用性和响应速度,同时增强系统的可扩展性和安全性。本文将介绍如何配置Nginx进行负载均衡,并提供具体的…...
华为OD机考题(基础API)
基础API 字典排序 List<String> listnew ArrayList(); //add list member Arrays.sort(list);List<Map<String,Integer>> listnew ArrayList(); //add list member Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {Over…...
<数据集>UA-DETRAC车辆识别数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:20500张 标注数量(xml文件个数):20500 标注数量(txt文件个数):20500 标注类别数:4 标注类别名称:[car, van, others, bus] 序号类别名称图片数框数1car201871259342…...
学生管理系统(C语言)(Easy-x)
课 程 报 告 课 程 名 称: 程序设计实践 专 业 班 级 : XXXXX XXXXX 学 生 姓 名 : XXX 学 号 : 231040700302 任 课 教 师 &a…...
C# 解析省份、城市、区域 json文件
一、json文件内容如下,(小程序里好像有用到...): 二、读取包含省份城市区域的json文件,并整理成想要的结果: string path Server.MapPath("/js"); string file System.IO.Path.Combine(path, "数据.…...
用C语言写的一个扫雷小游戏
头文件 调用头文件和声明函数 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <time.h> #include <stdlib.h>#define ROW 9 #define COL 9#define ROWS ROW2 #define COLS COL2#define EASY_CONT 10//声明函数 //初始化棋盘函数 void InitB…...
C++——类和对象(初始化列表和运算符重载与静态与友元)
文章目录 初始化列表语法结构定义和使用案例初始化列表初始化常量成员: 注意事项 运算符重载加法运算符重载语法结构示例注意事项 减法运算符重载语法结构示例注意事项 等于运算符重载等于运算符 的重载语法示例注意事项 大于运算符重载大于运算符 > 的重载语法…...
【WPF】图片剪裁-ImageCropping
【WPF】图片剪裁-ImageCropping 背景技术栈实现思路核心代码界面布局Style处理逻辑使用技巧预览下载背景 机缘巧合吧,当时在全网寻找图像剪裁工具,但大都不能满足需求,于是决定动手写。当然如果只是为了完成这么一个功能就没有必要记录了,主要是不依赖与第三方图像库,且实…...
C++的模板(十二):forward模板
标准库的std::forward模板有一个类型T参数。在实际使用时,T取什么值应该不存在疑惑: class A { public:A() {}A(int n):n(n) {}template <class T> A(T &&a);void print(A &&a) { printf("A&&\n"); }void pri…...
docker desktop历史版本安装
1.安装choco Windows安装 choco包管理工具-CSDN博客 2.通过choco安装 下面例子为安装旧版2.3.0.2,其它版本类似 Chocolatey Software | Docker Desktop 2.3.0.2 https://download.docker.com/win/stable/45183/Docker%20Desktop%20Installer.exe choco install docker-des…...
Ubuntu系统成功安装Docker教程
服务器版本: Ubuntu 22.04.3 LTS 1. 卸载旧版本 Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,需要卸载: sudo apt-get remove docker docker-engine docker.io containerd runc2. 更新 apt 软件包 …...
C++ 匹配并提取包括加中括号的日期时间的正则表达式
在C中,你可以使用std::regex库来匹配包含日期和时间的字符串。以下是一个简单的例子,它展示了如何使用正则表达式来匹配形如[YYYY-MM-DD HH:MM:SS]的字符串。include <iostream> #include <string> #include <regex> int main() { …...
一文-深入了解Ansible常见模块、安装和部署
1 Ansible 介绍 Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于python 开发的(集合了众多运维工具 puppet、cfengine、chef、func、fabric的优点)自动化运维工具, 其功能实现基于ss…...
etcd的备份与恢复
一 为什么使用etcd 与ZooKeeper相比,etcd更简单,安装、部署和使用更加容易,并且etcd的某些功能是ZooKeeper所没有的。因此,在很多场景下,etcd 比ZooKeeper更受用户的青,具体表现在如下几个方面: 1 etcd更…...
从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望
我在2021年底开始使用Polars和DuckDB。我立刻意识到这些库很快就会成为数据科学生态系统的核心。自那时起,这些库的受欢迎程度呈指数级增长。 在这篇文章中,我做出了一些关于未来几年数据科学领域的发展方向和原因的预测。 这篇文章旨在检验我的预测能力…...
【postgresql】pg_dump备份数据库
pg_dump 介绍 pg_dump 是一个用于备份 PostgreSQL 数据库的实用工具。它可以将数据库的内容导出为一个 SQL 脚本文件或其他格式的文件,以便在需要时进行恢复或迁移。 基本用法 pg_dump [选项] [数据库名] 命令选项 -h 或 --host:指定数据库服务器的主…...
服务器的80和443端口关闭也能申请SSL证书
一、简介 在服务器的80和443端口关闭的情况下,确实可以申请SSL证书,但申请过程和方法会根据证书类型和验证方式的不同而有所差异。 通常如果是网站域名申请SSL证书,哪怕服务器的80、443端口都打不开,也可以通过DNS解析的方式来验…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
