Cardinality在数据模型中的意思

简介:
最近在翻译一本数据库的教材,碰到Cardinality这个词,这个词在许多国内的数据库教材中不常见。查了一下英文资料觉得很有必要翻一下, 原文地址
内容如下:

Cardinality defines the numeric relationships between occurrences of the entities on either end of the relationship line.

基数是写在关系线两端 ,表明实体从一边通过关系可以得到另一边实体的数量。
(翻译的太烂。。)

 下面是一些实例:

Cardinality1.gif
LINK 这是0:0可选的关系,这样表达的意思就是:一个person 可以占用一个停车位(parking space),但是没必要一个person有一个停车位,也没必要一个停车位必须有一个人。虽然这个概念很简单,但是在数据库中实现却并不直接。你可能得令一个实体作为主表,使用触发器或者程序来限制在另一张表里关联的记录数目。
Cardinality2.gif
SubType 这是1:0的关系;只有一方有选择性。意思就是说一个人可能是一个程序员,那么一个程序员 一定是一个人。关系中强制方必须作为主表。跟前面一样,用触发器和程序来控制数据库。
Cardinality3.gif
Physical Segment 这是1:1的强制型关系。一个人必须有且仅有一个DNA序列,一个DNA序列也必须对应且仅对应一个人。  Cardinality4.gif
Possession 这是0:M(0对多)的可选型关系,意思就是一个人可能有0个电话,1个,或多个电话;某个电话可能没有主人,但是最多只能属于一个人。数据库里的实现方式:在phone表里设置一个可以为空的外键列,用这个列来关联person表。
Cardinality5.gif
Child 这是1:M的强制型关系,这是在数据库里最常见的一种关系类型,一个人可能是或者不是一个会员,但是有可能对应好几个club的会员(假如member实体表述的是多个club里的所有会员记录),毫无疑问,一个会员必须是一个人。数据库里,会员表必须有一个强制不为空的外键。实现二实体间的关联。
Cardinality6.gif
这个例子不太好,假设所有人的名字不重复。
Characteristic 这是0:M的关联,在M的一端是强制性的。这意思是说,一个人必须有至少一个名字,可以有多个名字,一个名字可能属于某一个人(或没主人)。在数据库里,可以再name表里设置一个可以为空的外键指向person表,使用触发器或者程序来强制一个person必须至少有一个名字。
Cardinality7.gif
Paradox 这是1:M实体两边都是强制型的关系。
Cardinality8.gif
Association 这是M:M(多对多)的可选型关系。概念上是这样的:一个人可以选择为0个,1个或多个老板工作,一个老板可以有0个,1个或多个员工。一般对于M:M这种多对多关系在数据库里面拆分成两个0:M的关系。中间实体表名可以叫做employee,因为它是用来将person实体联系到老板实体的。




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/211946,如需转载请自行联系原作者
目录
相关文章
|
11月前
|
算法 数据挖掘 索引
白话Elasticsearch47-深入聚合数据分析之Cardinality Aggs-cardinality算法之优化内存开销以及HLL算法
白话Elasticsearch47-深入聚合数据分析之Cardinality Aggs-cardinality算法之优化内存开销以及HLL算法
117 0
|
11月前
|
算法 数据挖掘
白话Elasticsearch46-深入聚合数据分析之Cardinality Aggs-cardinality去重算法以及每月销售品牌数量统计
白话Elasticsearch46-深入聚合数据分析之Cardinality Aggs-cardinality去重算法以及每月销售品牌数量统计
98 0
|
11月前
|
算法 索引
关系查询处理和查询优化
关系查询处理和查询优化
|
存储 SQL 消息中间件
[数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念
ODS 全称是 Operational Data Store**,操作数据存储.“面向主题的”,数据运营层,也叫ODS层,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的 ETL 之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。
2217 0
|
大数据 开发者
聚合操作_多维聚合_rollup | 学习笔记
快速学习聚合操作_多维聚合_rollup
71 0
聚合操作_多维聚合_rollup | 学习笔记
|
SQL 数据挖掘 关系型数据库
Hive 高阶--分组窗口函数--OLAP 相关分组函数(GROUPING SETS,CUBE,ROLLUP)|学习笔记
快速学习 Hive 高阶--分组窗口函数--OLAP 相关分组函数(GROUPING SETS,CUBE,ROLLUP)
167 0
Hive 高阶--分组窗口函数--OLAP 相关分组函数(GROUPING SETS,CUBE,ROLLUP)|学习笔记
|
大数据 开发者
聚合操作_多维聚合_cube | 学习笔记
快速学习聚合操作_多维聚合_cube
59 0
聚合操作_多维聚合_cube | 学习笔记
|
存储 缓存 NoSQL
ES通过 Enrich Processor 的 Ingest Pipeline 实现关系数据库中的表关联(join)操作
ES通过 Enrich Processor 的 Ingest Pipeline 实现关系数据库中的表关联(join)操作
ES通过 Enrich Processor 的 Ingest Pipeline 实现关系数据库中的表关联(join)操作
|
缓存 Java
Elasticsearch Query DSL之Compound queries(复合查询)
Elasticsearch Query DSL之Compound queries(复合查询)
Elasticsearch Query DSL之Compound queries(复合查询)
|
SQL 数据库 索引
SAP CRM One Order关于索引表CRMD_ORDER_INDEX的一些性能问题的分析
SAP CRM One Order关于索引表CRMD_ORDER_INDEX的一些性能问题的分析
154 0
SAP CRM One Order关于索引表CRMD_ORDER_INDEX的一些性能问题的分析