ER图示例 - 关系是什么?

时间:2016-04-13 01:11:29

标签: sql entity-relationship diagram

这是一个示例问题,我们必须建立ER图/关系...我正在努力解决这种关系!

公司的所有计算机都有序列号。此外,他们还有购买日期,制造商和操作系统版本。某些计算机是具有上述列以及静态IP地址和服务器管理员的服务器。非服务器的计算机称为工作站。他们在办公室有指定的房间号。

请帮助:)

2 个答案:

答案 0 :(得分:1)

为了使您的数据库完全正常化,您将要使用1:0..1关系:

CREATE TABLE computer {
  serial_number varchar,
  purchase_date date,
  manufacturer varchar,
  os_version varchar,
  computer_type varchar(1),  'server or workstation
  PRIMARY KEY (serial_number)
}

CREATE TABLE computer_server {
  serial_number varchar,
  static_ip varchar,
  admin varchar,
  PRIMARY KEY (serial_number),
  CONSTRAINT fk_computer_server FOREIGN KEY (serial_number) REFERENCES computer(serial_number)
}

CREATE TABLE computer_workstation {
  serial_number varchar,
  room_number int,
  PRIMARY KEY (serial_number),
  CONSTRAINT fk_computer_workstation FOREIGN KEY (serial_number) REFERENCES computer(serial_number)
}

答案 1 :(得分:0)

首先,弄清楚“实体”是什么。

实体是1)可以唯一识别的人,地点,事物,概念或事件2)对业务很重要,3)我们想要存储有关的信息。

获取规范,并提取任何看起来可能是实体的内容。这些可能并非都是实体,但它们是我们在开发模型时考虑的候选者。

  • 计算机
  • 公司
  • 序列号
  • 购买(活动)
  • 制造商
  • 操作系统版本
  • 服务器
  • 静态IP地址(“网络”也可以是实体)
  • 服务器管理员(人)
  • 工作站
  • 办公室

一旦我们有候选实体列表,我们会提出适当的问题来找出它们之间的关系。

让我们从“办公室”和“工作站”开始。那里有关系吗?让我们说一些话......我们可能不知道正确的话,但我们可以捅一下。由于缺乏更好的东西,让我们试试......

  • 工作站可以“进入”办公室。
  • 办公室可能“拥有”工作站。

现在,我们需要提出一些适当的问题,以找出关系的基数。它是一对一,一对多,零或一对多等等。我们提出的问题通常是以下形式:

  • 办公室可以有多个工作站吗?
  • 工作可以“进入”多个办公室吗?
  • 办公室可以没有工作站吗?
  • 工作站不能“进入”办公室吗?

根据这些问题的答案,我们确定是否需要这种关系......例如工作站是否必须在办公室。这在我们的模型中是强制性的还是可选的?

(忽略时态数据的建模,在单个时间点对状态进行建模,我们可能会确定:

  • 工作站可以“进入”零办公室
  • 办公室可以“拥有”零个,一个或多个工作站

这是一对多关系的示例,其中关系是可选的。

我们的一些候选实体将不会成为我们模型中的实体。例如,计算机的“制造商”可能对业务并不重要,或者我们可能不需要存储任何有关“购买”事件的信息。

“服务器”和“服务器管理员”之间的关系...

  • “服务器”可以由多个“服务器管理员”管理吗?
  • “服务器管理员”(人)可以管理多个“服务器吗?”
  • “服务器管理员”(人)可以管理零服务器吗?
  • “服务器”可以由零管理员管理吗?

这可能会成为我们模型中的多对多关系。 (我们可能会引入一个额外的“管理员”表来解决多对多关系,其中新的“管理”关系表将与“服务器”和“服务器管理员”具有外键关系。