2017-01-03 8 views
0

ER Assistant를 사용하여 첫 번째 엔티티 관계 다이어그램을 만듭니다.단순 엔티티 관계 중복성 오류

나는, 그 속성은 다음과 같이 내가 주장을 할당 한

LogID (Identity 1,1) PK 

LogEntry (varchar, 256) 

UserID FK 

을하고, 기업이 나는 로그라는 두 번째 엔티티를 생성 한

UserID (identity 1,1) PK 

UserName (varchar, 50) 

다음과 같은 속성을 포함하는 사용자라고 만들었습니다

  • 사용자가 여러 로그를 만들 수 있습니다.
  • 로그는 하나의 사용자가 작성해야합니다
  • 관계는 사용자가 필수 인 많은 로그에 하나의 사용자로 정의되며,

    내가 점점 오전 오류는 로그는 선택 사항입니다

:

" 'Logs'엔티티 유형의 'UserID'속성이 중복되어 'Creates'관계가됩니다. 'UserID'는 '사용자'의 기본 키이므로 '로그'의 속성이 아니어야합니다.

Logs 테이블에 외래 키로 UserID를 두지 않으면 내 질문에 올바르게 두 암호를 어떻게 연결합니까? 나는 이것이 어떻게 작동하는지에 관해 잘 알고 있다고 생각했지만, 지금이 순간 나에게 의미가 없다. 유효성 검사에서 오류인지 또는 실제로 잘못 지정했는지 확신 할 수 없습니다.

:
+1

어떤 난이 표시되지 않는 둘의 관계에 대해 동일한 엔티티 로그를 사용 그래도. 올바른 것 같습니다. 어디에서 오류가 발생합니까? – Rahul

답변

0

사용자 아이디가 로그 테이블의 속성 (가설 사용자뿐만 아니라 시스템에 의해 생성되는 로그를 고려)하지 않기 때문에

, 좋은 디자인은 제 3 테이블에 관계를 분리 할 것을 지시 로그는 시스템에 의해 생성 된 경우
UserLogs 
-------- 
UserID 
LogID 

이렇게하면 다른 테이블 만들 수 있습니다

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

을 그리고

+0

그래,이 오류가 확실히 수정되었습니다. 추가 엔티티를 작성하고 관계를 확장하면 더 이상 오류를보고하지 않습니다. 그러나, 나는 이것을 평가하는 방법에 대해 여전히 혼란 스럽습니다 ... 아니면 애플리케이션이 그것을 평가하는 방식을 이해하지 못한다고 말한 것 같습니다. – Rylsngrd

+0

내가 틀렸다면 나를 고쳐주세요. 그러나 LogEntry 필드는 로그에서 제거되고 각 하위 엔티티에 추가됩니까? 마지막으로, 나는 분명히 그것을 깨는 것이 더 튼튼한 디자인을 만드는 방법을 이해합니다. 그러나 나는 UserID가 하나가 아닌 다른 것의 차이를 이해하는 데 여전히 열중하고 있습니다. – Rylsngrd

+0

아니요, LogEntry는 Logs 테이블의 속성이므로 그대로 두어야합니다. 당신이 기본을 이해하지 못하는 ER 모델을 만들려고하는 것 같습니다. 나는 정상화에 대해 읽었을 것이다 - https://en.wikipedia.org/wiki/Database_normalization (최대 4NF 포함). – Anand