01 数据分析与SQL Lesson1 基本SQL

4.ERD基础知识

简单来说,一个数据库通常包含一个或多个表。每个表由一个名字标识(例如:“table1”),表包含带有数据的记录(行)。在课程的最开始,介绍了ERD - Entity Relationship Diagram / 实体关系图和数据库中的主键两个重要概念。

ERD实体关系图

实体 - 关系(ER)图(也称为ERD或ER模型)是Peter最初在1976年提出的经典且流行的概念数据模型。它是系统内不同实体的视觉表示以及它们如何相互关联。实体关系图广泛用于设计关系数据库。ER模式中的实体成为表,属性和转换的数据库模式。由于它们可用于可视化数据库表及其关系,因此它通常也用于数据库故障排除。

实体关系图(ERD)是数据结构的快照。实体关系图显示数据库中的实体(表)以及该数据库中的表之间的关系。对于良好的数据库设计,必须有一个实体关系图。

ER-Diagrams有三个基本要素:

  • 实体是我们想要存储信息的“事物”。实体是一个人,地点,事物或事件。
  • 属性是我们要为权利收集的数据。
  • 关系描述了实体之间的关系。

何时绘制ER图?

那么,我们该在什么时候绘制ER图呢?虽然ER模型大多是为展示概念和设计物理数据库而绘制的,但也有别的用途的,以下是一些典型的用例。

  • 数据库设计 - 直接在数据库更改数据库结构会有风险, 为避免破坏数据库中的数据,我们得仔细规划一切变更。通过绘制 ER 图来展示数据库设计意念,您能轻松找出错误和识别设计缺陷,并在执行数据库更改之前作出修正。
  • 数据库调试 - 调试数据库问题往往具挑战性,特别是当数据库包含许多表时,你我编写复杂的SQL来获取所需的信息。通过 ERD 来展示数据库结构,您可以全面地了解整个数据库的结构。您可以轻松找到实体,查看其属性并确定与别的实体的关系,有助您更轻松地找出数据库的问题。
  • 数据库创建和修补 - 像 Visual Paradigm 这样的 ERD 软件支持数据库生成工具,可以通过ER图来自动生成和修补数据库。使用这个 ER 图工具,您的ER设计不再仅仅是一个静态图,而是一个真实反映物理数据库结构的镜像。
  • 帮助收集需求 - 您可以通过绘制 ERD 来表达系统中的高级业务对象以用于确定系统的需求。这种初始模型也可以演化为物理数据库模型,用于创建关系数据库,或为创建流程图和数据流模型提供有力的参考。

ERD 符号指南:

ER 图包含实体,属性和关系。在本节中,我们将详细介绍各 ERD 符号,结合图的说明如下:

01 -数据分析与SQL- Lesson1 基本SQL

  • 实体:ERD中的实体是一个系统内可定义的事物或概念,如人/角色(例如学生),对象(例如发票),概念(例如简介)或事件(例如交易)(注:在 ERD 中,术语“实体”通常用来代替“表”,但它们是一样的)。在考慮实体时,嘗試把它们想成名词。在 ER 模型中,实体显示为圆角矩形,其名称位于上方,其属性列在实体形状的主体中。
  • 实体属性:也称为列 (Row),意思是持有它的实体的属性或特性。一个属性有一个描述属性的名称和一个描述属性种类的类型,例如代表字符串的 varchar,整数的 int。当为物理数据库开发绘制 ERD 时,得使用目标 RDBMS 支持的类型,以確保設計和物理数据库的一致性。
  • 主键:主键又称 PK,是一种特殊的实体属性,用于界定数据库表中的记录的独特性。一个表不能有两笔(或更多)拥有相同的主键属性值的记录,像是身份证明内的 ID 便是典型的例子,两个人即使性名相同,ID 是不会一样,若身份证明是个表,那ID 便是主键了。
  • 外键:外键又称外来键和外部键,是对主键的引用,用于识别实体之间的关系。请注意,有别于主键,外键不必是唯一的,多个记录可以共享相同的值。
  • 关系:两个实体之间的关系表示这两个实体以某种方式相互关联。例如,学生可能参加课程。实体“学生”因此与“课程”相关,而这关系则在 ER 图中以连接线表达着。
  • 基数:基数定义了一个实与另一个实体的关系里面,某方可能出现次数。例如,一个团队有许多球员,若把这关系呈现于 ERD 时,团队和球员之间是一对多的关系。在 ER 图中,基数表示为连接线端的乌鸦脚。三种常见的主要关系是一对一,一对多和多对多。

PK和FK的解释

在课程图中,大家注意到其中有PK和FK,其实这是对右侧column的限制(比如说所有id都是PK,是Primary Key,说明这个列是主键,几种column的标识如下:

  • 主键约束 SQL中constraint PK_字段 primary key(字段),
  • 唯一约束 constraint UK_字段 unique key(字段),
  • 默认约束 constrint DF_字段 default(‘默认值’) for 字段,
  • 检查约束 constraint CK_字段 check(约束。如:len(字段)>1),
  • 主外键关系 constraint FK_主表_从表 foreign(外键字段) references 主表(主表主键字段)

01 -数据分析与SQL- Lesson1 基本SQL

7.视频:数据库如何存储数据

这一节从 Excel 电子表格出发对 SQL 数据库做了解释:

  1. 数据库中的数据存储在类似于 Excel 电子表格的表中。
    大多数情况下,可以将数据库视为一堆 Excel 电子表格。每个电子表格都有行和列。每行保存有关交易、个人、公司等的数据。而每列所保存的数据与你关心的某一特定行相关,如名称、位置、唯一身份等。
  2. 同一列中的所有数据必须符合数据类型。
    将整个列认为是定量离散的或是某种字符串。这说明如果特定列中有一行字符串,那么整个列可能会更改为文本数据类型。 如果想使用此列进行数学计算,这可能会非常糟糕!
  3. 列类型一致是快速使用数据库的主要原因之一
    数据库通常会存储海量数据。因此,知道这些列都是相同类型的数据意味着可快速从数据库获取数据。

8.文本+练习:数据库类型

需要注意,在课程内嵌的环境和课程中,使用的是PostgreSQL。大部分是通用的,但是也会有小的区别,如下链接介绍:/三种最常见的SQL类型区别/

9.视频语句类型

Plus:一段SQL语句是Statements,由clauses组成(SELECT、FROM可以简单的理解一个大写的是一个clauses,很多clauses组成了Statements)。

24.视频:WHERE

使用WHERE时,后面的运算符有两种。第一种是表示大小判断的算术运算符,第二种是可以用于进行文本之间判断的逻辑运算符,逻辑运算符包括:

  • LIKE 表示符合通配符规则的都选出来。其中%表示其他可能的数字。
  • IN 表示按照后面的值精确匹配(比如过滤出特定顾客的订单),可以是(x,y)这样的多值。
WHERE name LIKE '%one%';
WHERE channel IN ('organic', 'adwords');

PLUS 派生列

Derived Column。我们将现有的列组合,生成的新列称为派生列。在生成以后,可以用AS为这列起名(否则筛选出的结果这列名字是?Column这样的).

SELECT standard_qty / (standard_qty + gloss_qty + poster_qty) AS stand_ratio

PLUS SQL语句的顺序

SQL语句的顺序是:SFWOL(每行缩写)

SELECT col1, col2, col5
FROM table1
WHERE col3  > 5 AND col4 LIKE '%os%'
GROUP BY col1
HAVING ...
UNION ...
ORDER BY col5
LIMIT 10;

Plus SQL语句为什么要大写

其实Select、 SELECT、 SeleCT这样都是能正常运行的。但是大家想过没有,为什么都可以运行?因为SQL语句在执行的时候会先把语句都转换成大写的。如果写了小写的,会在执行时候先进行转换。增加执行的时间,当语句很多的时候影响执行效率。一般大公司会对此做要求。而且在很长代码的时候大写更容易辨认。

Plus SQL中的单引号和双引号

SQL环境中使用单引号和双引号都是可以的。但如果环境中启用了NSI_QUOTES的话就回出现错误,所以建议统一使用单引号。

Plus 联合主键

在SQL中,还有一种联合主键:
联合主键就是用2个或2个以上的字段组成主键。
用这个主键包含的字段作为主键,这个组合在数据表中是唯一,且加了主键索引。 比如你的订单表里有很多字段,一般情况只要有个订单号bill_no做主键就可以了,但是现在要求可能会有补充订单,使用相同的订单号,那么这时单独使用订单号就不可以了,因为会有重复。那么你可以再使用个订单***bill_seq来 作为区别。把bill_no和bill_seq设成联合主键。
/原文链接/

ps:课程中有一道题是说主键是否只有一列,可以按照是做回答。(可以理解为主键唯一,所以是一列。如果需要使用联合主键,则联合主键是多列。)

Plus 数据库的一致性

本节中提到了SQL之所以能够高效的处理数据库中的数据,是因为数据库的列都是同一类别的数据(也叫Feature)。对于数据库做一点扩展:数据一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。

  • 强一致性:当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值。这种是对用户最友好的,就是用户上一次写什么,下一次就保证能读到什么。根据 CAP 理论,这种实现需要牺牲可用性。
  • 弱一致性:系统并不保证续进程或者线程的访问都会返回最新的更新过的值。系统在数据写入成功之后,不承诺立即可以读到最新写入的值,也不会具体的承诺多久之后可以读到。
  • 最终一致性:弱一致性的特定形式。系统保证在没有后续更新的前提下,系统最终返回上一次更新操作的值。在没有故障发生的前提下,不一致窗口的时间主要受通信延迟,系统负载和复制副本的个数影响。DNS 是一个典型的最终一致性系统。
  • 其实一致性是缘由CAP定理:一致性(Consistency)、可用性(Availability)和分区耐受性(Partition tolerance),3个属性只可能同时满足2个.

相关文章:

  • 2021-08-16
  • 2021-12-19
  • 2021-09-09
  • 2021-12-10
  • 2021-12-03
  • 2021-07-23
  • 2021-10-24
  • 2022-12-23
猜你喜欢
  • 2021-07-22
  • 2021-10-14
  • 2021-07-11
  • 2021-05-22
  • 2021-07-06
  • 2022-01-18
  • 2022-01-22
相关资源
相似解决方案