2017-01-03 6 views
0

ERアシスタントを使用して、最初のエンティティリレーションシップダイアグラムを作成しています。単純なエンティティリレーションシップエラー

私は、その属性は次のように私はそれアサーションを割り当てた

LogID (Identity 1,1) PK 

LogEntry (varchar, 256) 

UserID FK 

をしている、エンティティが、私はログと呼ばれる第二のエンティティを作成した

UserID (identity 1,1) PK 

UserName (varchar, 50) 

次の属性が含まれているユーザーと呼ばれる作成しました

  • ユーザーは多数のログを作成できます
  • ログは唯一のユーザーによって作成されなければならない
  • 関係は、ユーザーが必須であることを多くのログに1人のユーザーとして定義され、

    私は取得していますエラーがあるログはオプションです

"'Logs'エンティティタイプの 'UserID'属性は、 'Creates'関係 で冗長です。 'UserID'は 'Users'の主キーであるため、 'logs'の属性であってはなりません。

私の質問は、Logsテーブルに外部キーとしてUserIDを配置しないと、どうすれば適切に関連付けられますか?私はこれがどう機能するかをよく理解していると思っていましたが、現時点ではこれは間違いありません。私はこれが妥当性チェックのエラーであるかどうかわからない、または私は実際にこれを間違って実行しています。

+1

に同じ実体ログを使用するには、任意のIが表示されませんしかし、ssue。正しいと思われる。どこでエラーが出るのですか? – Rahul

答えて

0

ユーザーIDは(仮に、ユーザーだけでなく、システムによって作成されたログを検討)ログテーブルのプロパティではありませんので、良いデザインは、あなたが第三のテーブルに関係を分離することを指示:

UserLogs 
-------- 
UserID 
LogID 

この方法でログはシステムによって作成された場合、あなたは別のテーブルを作成することができます。

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

を、両方の関係

+0

これで間違いなくエラーが修正されました。追加エンティティを作成して関係を拡張することで、エラーは報告されなくなりました。しかし、私はまだこれを評価する方法に混乱している...または多分最高の私​​はアプリケーションがそれを評価する方法を理解していないと言った。 – Rylsngrd

+0

私が間違っている場合は私を訂正しますが、LogEntryフィールドはLogsから削除され、各下位エンティティに追加されますか?最終的には、それを壊すことがより堅牢なデザインになることは間違いなく理解していますが、私はUserIDとUserIDの違いを理解していません。 – Rylsngrd

+0

いいえ、LogEntryはLogsテーブルのプロパティであり、そこに残る必要があります。基本的なことの一部を理解せずにERモデルを作成しようとしているようです。私は標準化 - https://en.wikipedia.org/wiki/Database_normalization(最大4NFを含む)から始めることにしました。 – Anand