2014-05-12 2 views
1

저는 Teisony, Simison 등이 저술 한 "Database Design"을 읽었습니다. 특정 시점에서 다중 값 속성이있는 엔티티를 관계형 테이블에 매핑하는 방법을 설명합니다. 다음 예는 다중 값 속성이 취미 인 경우입니다. 두 테이블다중 값 속성 표시

Employee(Employee_ID(PK),name,surname) 
Hobby(Employee_ID(PK),hobby(PK)) 

책 엔티티 E 기본 키 p로 지정해, ER 다이어그램에 부착 된 다중 값 속성 E가 단에 매핑되는 "것을 다소 말한다 리드

Employee(Employee_ID(PK),name,surname,hobby) 

p와 속성 값 (들) a "로 구성된 기본 키를 가진 자체 테이블. 이것은 일반적인 규칙입니까? 다음과 같은 다중 값 속성 책을 사용합니다.

Author(Author_ID(PK),name,book) 

는이 책의 PK가 책의 PK의 일부가되어 가고 않고 단순히 Book_ID 및 author_id 값은 FK이다 인 follwing을 두 개의 테이블을 생성하기에 충분하지 않을까요?

Author(Author_ID(PK),name) 
Book(Book_ID,book,Author_id(FK)) 

답변

0

네가 맞아. 당신이 원한다면 확실히 할 수 있겠지만 은 취미 나 책에서 복합 기본 키를 사용하는을 가지고 있지 않습니다. this question에 대한 대답은 언제 하나를 사용할 지에 대한 좋은 개요입니다.

실제로 예제를 구현하려는 경우 작성자가 많은 책을 쓸 수 있고 책에 많은 작성자가있을 수 있으므로 저자, 도서 및 associative entity의 세 테이블을 원할 수 있습니다.

+1

그러나 다른 직원이 같은 취미를 갖고 있다면 어떻게 될까요? 취미 이름 만이 PK로 사용되면 키가 중복 될 수 있습니다. 나는이 취미 예를 여기 다른 곳에서도 보았습니다. http://www.tomjewett.com/dbdesign/dbdesign.php?page=hobbies.php – tagomago

+0

Teorey가이 문제를 다루는 방법에 대해서는 잘 모르겠지만 생각합니다. "다중 값 속성"과 "다 대다 관계"를 구별하는데 유용합니다. 또한 ER 모델링과 관계형 모델링을 구별하는 것이 유용하다고 생각합니다. 관계형 모델링에서 FK는 관계를 구현하는 수단입니다. ER 모델링에서 관계는 표시되지만 구현되지는 않습니다. –

+0

@AlfioCastorina : 당신이 질문에 제기 한 2 테이블 구조에서 취미 이름을 기본 키로 사용할 수 없다는 것은 맞습니다. 다른 직원을 위해 반복 될 수 있기 때문입니다. 그러나 Book/Author 예제와 마찬가지로 Hobby_ID와 같은 기본 키 역할을하는 다른 필드를 도입 할 수 있습니다. 이것을 [대리 키] (http : //en.wikipedia.org/wiki/Surrogate_key), 유일한 목적은 취미를 유일하게 식별하는 것이다. 그것은 취미 자체에 관해 당신에게 아무것도 말하지 않습니다. –

0

책의 PK가 단순히 Book_ID이고 Author_ID가 책의 PK가되지 않고 FK 인 두 개의 표를 만드는 것으로 충분하지 않습니까?

저자 키 집합 {book_id}이 (가) 작성자의 책 세트가 겹치지 않는 경우에만 있기 때문에 틀림 없습니다. 중복되는 경우 {book_id, author_id}이 (가) 필요합니다.

새 PK가 필연적으로 두 개의 열이 결합되어 있지만 책이 잘못되었습니다. (마찬가지로 직원의 취미가 겹치지 않으면 hobby_id가 취미의 후보 키입니다.) 그래서 책의 열 변환은 정확하지만 새로운 각 테이블의 후보 키를 독자적으로 결정해야합니다.

this answer relationalizing designs를 참조하십시오.