1

UPDATE : 관계형 모델 나는 그것이,보고 싶은 방식으로 작동하지 않을 수 있습니다 NoSQL에 대한 Database normalization for facebook-like messaging system 시간! 기능 종속성

데이터베이스를 2nf에 넣는 데 문제가 있습니다. 이를 위해 속성이 소수인지 비 소수인지를 결정하기 전에 모든 함수 종속성을 결정해야합니다.

-------------------------------------------- 
    to | from | msg   | time 
--------|--------|----------------|--------- 
    joe | jim | hello   | 1 
    jim | joe | hey   | 2 
    jim | joe | how are you | 3 
victor | bryce | i love carrots | 4 
    joe | jim | im doin great | 5 
    bryce | jim | hello   | 6 

참고 : 시간은 고유합니다

여기를 보라. 그것은 처리 될 것이다.

내가 한 메시지의 고유의 인스턴스가있는 것처럼 들었다 때문에

time1->"hello" 
time6->"hello" 

, 고운에도 불구하고 시간 -> 메시지 않습니다. 그러나, 나는 이것으로 혼란스러워합니다.

또한 메시지 ID 열을 추가하고 싶습니다. 그 좋은 연습 이니?

+0

수정 사항의 링크는 불쌍한 * 답변입니다. –

답변

1

함수 종속성은 " 'X'에 대해 하나의 값을 알고 있다면 'Y'에 대해 하나의 값만 알 수 있습니까?", 여기서 'X'와 'Y'는 관계의 속성입니다.

속성 "time"의 값이 실제로 고유하면 "time"에 대한 하나의 값을 아는 것이 하나의 값만 알고 있음을 의미합니다 ('X'및 'Y'는 을 참조합니다. "msg". 즉,이 관계에 대한 함수 종속성 time-> msg가 있음을 의미합니다.

대조적으로 "joe"값을 알고있는 것이 "msg"에 대해 두 개의 값을 알고 있음을 의미하기 때문에 함수 관계 "to"-> "msg"는이 관계에서 유지되지 않습니다. 'hello' 나는 훌륭한 일을한다. 이 관계에 대해서는 보유하지 않기 때문에 "to"-> "msg"는이 관계에서 기능적 종속 관계가 아닙니다.

정확한 이유는 "to, from"-> "msg"는이 관계에 없습니다. 따라서 "to, from"-> "msg"는이 관계에서 기능적 종속 관계가 아닙니다.

또한 메시지 ID 열을 추가하고 싶습니다. 그 좋은 연습 이니?

원본 관계가 아닌 특성을 추가하는 것은 정규화가 아닌 데이터 압축과 관련이 있습니다. 정규화는 새로운 속성이나 새로운 의존성을 가져 오지 않습니다. 속성으로 "msg_id"를 추가하면 "msg_id"-> "msg"및 "time"-> "msg_id"라는 두 가지 새로운 기능 종속성이 생깁니다 ("msg_id"의 ​​의미에 따라 다름).

"msg_id"속성을 추가하는 것은 때로는 좋은 생각 일 수 있지만 (생각보다 적은 경우) 정규화와는 아무런 관련이 없습니다. "msg_id, msg"를 새 테이블로 투영하고 원본 관계에서 "msg"를 제거하려는 경우 "msg"도 고유해야한다고 선언해야합니다.

+0

어떻게하면이 데이터베이스를 실제로 작동하도록 수정하겠습니까? 그래서 2nf로 가져올 수 있습니다. –

+0

@SteveWebster : 합리적인 것처럼 보이는 "시간"-> "~", "~", "msg" 이미 BCNF에 있습니다. 즉, 3NF, 2NF 및 1NF에도 있음을 의미합니다.비공식적으로 a) "시간"이 유일한 후보 키이고 b) "시간"이 단일 열인 경우 2NF가되어야합니다. (부분 키 종속성을 가질 수 있으려면 먼저 후보 키에 여러 개의 열이 있어야합니다.) "시간"은 기능 종속성의 왼쪽에있는 유일한 속성이므로 전이 의존성이 없어야하므로 3NF에 있어야합니다. 모든 FD의 모든 화살표는 후보 키의 화살표이므로 BCNF에 있어야합니다. –

+0

하지만 실제로는 "시간"-> "메시지"가 보류됩니까? 두 개의 메시지가 반복 될 가능성이 높습니다. –