我必须根据下面给出的一些高级描述创建一个ERD图:
这是我制定的,我不确定它是否准确。如果有人可以仔细检查并指出更正,那将是值得赞赏的:
编辑:
将图表更改为下面的图表。我仍然不确定复合键或外键。如果有人可以帮我解决这个问题?
第二次编辑: 更改了格式并尝试解决上述问题。也改变了一些功能。
答案 0 :(得分:0)
我相信给你最好的答案就是质疑潜在的问题,以便你能够思考这些问题:
该图表示Feedback Question
可以属于/属于多个Recipient
。每个Feedback Question
不应该属于/属于单个Recipient
吗?
您如何处理模型中的第3点?
Submitters
似乎是基于你给他们的属性的雇主,但从描述中听起来他们是雇员?
您如何处理模型中的第4点?
为什么Submitters
有Due Date
?如何使用第8点?
Recipients
如何知道每个Feedback Question
与Feedback Result
相关的内容?
该图表示每个Feedback Result
可以与多个Submitters
相关联。你不认为每个Feedback Result
应该有一个单独的Submitter
,即每个Feedback Result
应该只与一个Submitter
相关联吗?
为什么Feedback Results
有截止日期?我只看到说明中提交的提交日期。
为什么要为每个Average Score
录制Feedback Result
?用查询计算它不是更好吗?
为什么要在Views
和Recipients
之间建立Feedback Results
关系?您是否认为描述只是要求他们能够查看(查询)结果,而不是记录他们的观点?
回复您的修改:
您将Feedback Question
直接关联到Questions
没有关系 - 这在ER中无效。
您已将Submitters
Due Date
更改为Submission Date
,但Submitter
无法在不同日期提交答案(请参阅第8点)?我只想在Submission Date
而不是Feedback Results
上加Due Date
,Submitters
上没有任何日期。
Submitter
可以匿名提交一些Feedback Results
而其他人公开提交吗?
您向Feedback ID
添加了Feedback Results
属性 - 我认为这应该是一种关系。
我对Views
(他们两个)和Average
的建议并不是要对它们进行建模。平均值是派生的事实 - 我们只需要在数据库中记录基本事实。查看数据是运行时行为,而不是需要记录的信息。
您说您仍然不确定复合键或外键。如果您能解释一下您不确定的内容,我可以提供帮助。就个人而言,我更喜欢使用1,M和N作为基数指标而不是乌鸦的脚,但我可以用任何一种方式阅读。
我同意您对Recipient
关系基数的更改,但我认为您需要对Submits
执行相同的操作 - 每个Feedback Result
应由一个Submitter
。
您的第三次尝试:您现在拥有数据库或表格图,而不再是实体关系图 - 换句话说,您从概念模型切换到物理模型。
表格图中的外键约束是定向的,因此您不能在它们之间使用多对多连接。
您的Feedback
表格需要Question ID
,这意味着您必须将每个新问题插入第3点中提到的预先存在的列表中。这就是作业的目的吗?
反馈表的主键是什么?它是Question ID
和Recipient ID
的组合吗?但是,Feedback Assignment
似乎是指不存在的代理ID。
Feedback Assignment
表的主键是什么?它是Feedback ID
和Employee ID
的组合吗?这就是Feedback Results
所指的内容,这意味着代理ID是不必要的。
在Feedback Results
中,代理键Results ID
似乎是多余的,因为AFAICT Feedback ID
和Employee ID
的组合唯一标识每一行。
您仍然拥有Avg Table
,我认为这是不必要的,因为可以通过查询轻松计算平均值。
在Avg Table
中,您将Average Score
指定为外键。我不知道这是如何工作的。它不应该使用Feedback ID
作为外键和主键吗?
您的Views
约束似乎与任何列都不对应,并且是不必要的IMO。
希望有所帮助。