1

난 테이블이 2 개 있습니다. 기본 키 book_id와 title이라는 다른 필드가있는 책 테이블. 기본 키 author_id와 필드 first_name, last_name 및 외래 키 book_id가있는 작성자 테이블.이 디자인은 2NF를 구성합니까?

내 디자인이 2NF를 준수합니까?

답변

3

는 일반적으로 (그리고 평신도의 관점에서), 레벨 1의 정상화는 의미 :

  • 중복 행의 가능성을.
  • 행이나 열에 고유 한 정렬이 없습니다.
  • 각 "셀"에는 단 하나의 정보 만 들어 있습니다.

2NF의 경우 모든 열이 전체 키 (다른 비 키 열을 통해 직접 또는 간접적으로)에 종속된다는 추가 제한 조건이 있습니다.

그래서 1NF에 대한 기준을 충족하고 책이 저자에 의존하기 때문에이 경우 2NF를 준수한다고 말하고 싶습니다.

하지만 여전히 좋은 디자인은 아닙니다. 특히 일반적으로 3NF부터 시작해야하기 때문에. 더 나은 솔루션 날려 전체 것 :

books: 
    book_id 
    title 
authors: 
    author_id 
    name 
books_and_authors: 
    book_id 
    author_id 

그 방법은, 당신이 대다 책과 저자 사이의 관계 (0을 포함). 유일한 경우는 1NF에 어떠한 비 주요 특성 (wikipedia)에서 테이블 후보 키 중 적절한 서브 세트에 의존하지 않는 경우

+0

나중에 다 대 다 관계를 수용하지 않는다는 점을 고려할 때 좋은 디자인이 아니라는 것을 알고 있습니다. 위의 질문은 내 마음에있는 문제를 명확히하기위한 것입니다. 도와 주셔서 감사합니다. –

1

테이블은 2NF이다.

테이블이 1NF 인 것으로 가정해야합니다.
후보 (및 기본) 키는 book_id 및 author_id입니다.

귀하의 비 주요 속성은 제목, 및 LAST_NAME FIRST_NAME 있습니다. 이러한 속성은 후보 키의 적절한 하위 집합에 의존하지 않습니다 (하위 집합이 없으므로 쉽게 구현됩니다). 이 디자인의 유일한 문제는 외래 키 book_id이 서적 작성자를 1 : 1 관계로 만듭니다 (즉, 한 권의 책 -> 한 권의 저자, ​​한 권의 저자 -> 한 권의 책). 이것은 쉽게 새 테이블이 을 들고 고정 할 수는을 book_id 및

1NF (또한 wikipedia) author_id :

  • 행에는 위에서 아래로 순서가 없습니다합니다.
  • 왼쪽에서 오른쪽으로 열 순서가 없습니다.
  • 중복 행이 없습니다.
  • 모든 행과 열 교차 영역에는 적용 가능한 도메인의 값 하나만이 포함됩니다 (그 밖의 것은 없습니다).
  • 모든 열은 규칙적입니다. 행에는 행 ID, 객체 ID 또는 숨겨진 시간 소인과 같은 숨겨진 구성 요소가 없습니다.

관계형 데이터베이스를 구성하는 방법은 다음과 같습니다.

관련 문제