简单的实体关系冗余错误

时间:2017-01-03 19:42:12

标签: sql entity-relationship redundancy

我正在使用ER Assistant创建我的第一个实体关系图。

我创建了一个名为Users的实体,其中包含以下属性

UserID (identity 1,1) PK 

UserName  (varchar, 50)

我创建了第二个名为Logs的实体,其属性为

LogID (Identity 1,1) PK

LogEntry (varchar, 256)

UserID FK

我已将其断言分配如下,

  • 用户可以创建许多日志
  • 必须仅由一个用户创建日志

该关系被定义为一个用户到多个日志,其中用户是必需的,日志是可选的

我得到的错误是:

  

“'Logs'实体类型中的'UserID'属性是多余的   '创造'关系。因为'UserID'是主键   “用户”不应该是“日志”的属性。

所以我的问题是,如果我没有将UserID作为外键放在Logs表中,我该如何正确地将这两者联系起来呢?我以为我对这是如何工作有一个很好的理解,但这对我来说绝对没有意义。我不确定这是否是有效性检查中的错误,或者我实际上是错误地做了这个。

1 个答案:

答案 0 :(得分:0)

由于UserID不是Logs表的属性(假设用户和系统创建了一个Log,假设),良好的设计要求您将关系分成第3个表:

UserLogs
--------
UserID
LogID

这样,如果系统创建了日志,您可以创建另一个表:

SystemLogs
----------
SystemID
LogID

并为两个关系使用相同的实体Log