实体关系模型和图表

实体与实体集

  • 实体是可识别的“事物”。命名的框表示一组实体或实体集。 属性、值与值集 E-R模型是以值为导向的。值可以是整数、字符串或原子。

属性、价值和价值集

  • E-R 模型以价值为导向。值 可以是整数、字符串或原子。

实体的属性

  • 实体可以拥有属性。同一实体集中的所有实体具有相同的属性。 然而,属性对每个实体来说都取不同的值。

关系与关系集

  1. 一个菱形代表一组关系或一个关系集。
  2. 一个关系关联两个实体(也可以是0个或更多)。一个关系集是一组关系,将来自同一实体集的实体关联起来。
  3. 一个关系关联2个或更多实体。一个关系集是一组关系,将来自同一实体集的实体关联起来。

关系的属性

  1. 关系可以拥有属性。同一关系集中的所有关系具有相同的属性。
  2. 关系的区别不在于它们的属性,而在于它们的参与实体。

关系与关系集

  1. 关系可以将来自同一实体集的实体关联起来。在这种情况下,一般来说,参与关系的角色可以被命名。
  2. 一个关系可以关联少于或多于2个实体。 我们称之为n元关系。

实体的身份

  1. 一个属性可以标识实体。这是实体集中所有实体的属性。 注意:至少所有属性可以标识实体。
  2. 属性的组合可以标识实体。
  3. 可能有几种属性组合可以标识一个实体。
  4. 注意:至少所有属性都能识别实体,但我们可能更喜欢最小的属性

弱实体

  1. 一些实体只能在与另一个实体集的关系范围内被标识。请注意,关系必须存在并且对集合中的每个实体都是唯一的。
  2. 学号 由大学提供。相同的号码可以被不同的大学使用。
  3. 大学是一个主导实体。我们需要知道大学才能识别学生。 学生是一个弱实体。它不能仅凭其属性被识别。

关系的参与和基数

(1, x) 表示强制参与。

(0, x) 表示可选参与。

(x, 1) 对于所有涉及的实体表明一对一的关系。

(x, 1) 对于一个涉及的实体和 (x, N) 或 (x, y) y > 1 对于其他实体表明一对多的关系。

(x, N) 或 (x, y) y > 1 对于所有涉及的实体表明多对多的关系。

关系的基数

  1. 参与关系的基数可以通过最小值和最大值来约束:(1,1), (0, n), (2, 5)
  2. 另一个例子:学术工作人员可以指导最多5名研究生。有些工作人员不指导学生。研究生可以有一位或两位导师。
  3. 默认情况下,我们有多对多的关系。
  4. 一对一关系的例子。

弱实体

  • 弱实体只能针对被(1,1)基数约束的参与定义。也称为强制一对多关系。

规则1:

  • 值集 值集映射到域。在实践中,这是向物理设计迈出的第一步。E-R属性映射到关系的属性。

规则2:

  • 实体集 实体集映射到关系。实体集的属性映射到关系的属性。键映射到主键。
CREATE TABLE company(
name VARCHAR(64) PRIMARY KEY,
address VARCHAR(128) NOT NULL);


CREATE TABLE person (
first name VARCHAR(32),
last_name VARCHAR(32),
address VARCHAR(128) NOT NULL,
PRIMARY KEY (first_name, last_name));

规则3:

关系集 关系集映射到关系。关系的属性由关系集的属性以及参与实体的键组成。

CREATE TABLE contract(
start DATE NOT NULL,
end DATE NOT NULL,
object VARCHAR(128) NOT NULL,
pfirst_name VARCHAR(32),
plast_name VARCHAR(32),
cname VARCHAR(64),
PRIMARY KEY (pfirst_name, plast_name, cname),
FOREIGN KEY (pfirst_name , plast_name)
REFERENCES person(first_name, last_name),
FOREIGN KEY (cname) REFERENCES company(name));

例外 1:一对多关系

CREATE TABLE work_for(
start DATE NOT NULL,
end DATE NOT NULL,
enumber CHAR(8) PRIMARY KEY,
cname VARCHAR(32) NOT NULL,
FOREIGN KEY (enumber) REFERENCES employee(number),
FOREIGN KEY (cname) REFERENCES company(name));


我们更改了关系表的主键或添加了 UNIQUE 约束。

例外 2:(1,1)参与限制

我们合并雇员表和 work_for 表,并使用雇员表的主键。

CREATE TABLE employee_work_for (
start DATE NOT NULL,
end DATE NOT NULL,
enumber CHAR(8) PRIMARY KEY,
ename CHAR(32) NOT NULL,
cname VARCHAR(32) NOT NULL,
FOREIGN KEY (cname) REFERENCES company(name));

例外 3:弱实体 

我们合并表 employee 和表 work_for,并使用弱实体的主键。

CREATE TABLE employee_work_for(
start DATE NOT NULL,
end DATE NOT NULL,
enumber CHAR(8),
ename CHAR(32) NOT NULL,
cname VARCHAR(32),
PRIMARY KEY (enumber, cname),
FOREIGN KEY (cname) REFERENCES company(name));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值