这是一个示例问题,我们必须为其构建ER图/关系...我在纠结于这段关系是什么!
公司所有的电脑都有序列号。此外,它们还具有购买日期、制造商和操作系统版本。有些计算机是具有以上列以及静态IP地址和服务器管理的服务器。非服务器的计算机称为工作站。他们在指定房间号的办公室里。
请帮助:)
发布于 2016-04-13 09:48:29
为了保持数据库的完全规范化,您需要使用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)
}发布于 2016-04-13 10:18:27
首先,找出“实体”是什么。
实体是1)可以唯一标识的人、地点、事物、概念或事件,2)对业务很重要,3)我们想要存储关于它的信息。
拿起规范,取出任何看起来可能是实体的东西。这些可能不都是实体,但它们是我们在开发模型时要考虑的候选对象。
一旦我们有了候选实体的列表,我们就会提出适当的问题来找出它们之间的关系。
让我们从"office“和"workstation”开始。他们之间有关系吗?让我们用一些词来解释一下...我们可能不知道正确的词语,但我们可以试一试。因为缺少更好的东西,让我们试试...
现在,我们需要问一些适当的问题,以找出关系的基数。是一对一、一对多、零对多还是一对多等等。我们问的问题通常是这样的:
根据这些问题的答案,我们确定关系是否需要...例如,工作站是否必须在办公室中。在我们的模型中,这是强制的还是可选的?
(忽略对时态数据的建模,对单个时间点的状态建模,我们可能会确定:
a office can”
这是一个一对多关系的示例,其中关系是可选的。
我们的一些候选实体将被证明不是我们模型中的实体。例如,也许计算机的“制造商”对业务并不重要,或者我们可能不需要存储任何关于“购买”事件的信息。
"server“和"server admin”之间的关系...
在我们的模型中,这可能会变成一种多对多的关系。(我们可能会引入一个额外的“admin”表来解决多对多关系,其中新的“admin”关系表将同时具有"server“和"server admin”的外键关系。
https://stackoverflow.com/questions/36586812
复制相似问题