2012-11-22 1 views
5

내가 가지고 만든 다음 표 :일대일 관계 또는 동일한 테이블 사용?

보았 animes (ID, 제목, 날짜), 만화 (ID, 제목, 날짜), TVSeries (ID, 제목, 시즌, 에피소드, 날짜)

그들 중 일부를 장르, 장르 등의 외래 키 (일대 다 또는 다 대다 관계의 경우)가 이미 있습니다.

이제 리뷰 (ID, 평점, 날짜)와 게시물 (ID, 숨김, 기사 ID, 리뷰 ID)이 2 개 더 필요합니다. 리뷰는 Anime 및/또는 Comic TVSerie와 그 반대의 약 1 개이지만 검토 속성은 둘 이상의 테이블에있을 수 있습니다. 게시물에 대해 같은.

이것은 별도의 테이블에서 일대일 관계의 일반적인 예입니까, 아니면 기존 테이블에 더 많은 속성을 추가하는 것이 더 효율적입니까? 더 많은 테이블과 관계 또는 더 적은 테이블의 컬럼?

고마워요. 제 질문은 바보 같지 않지만 조금 혼란 스럽길 바래요.

답변

1

내가 정확히 요구 사항이 무엇인지 모르겠지만, 다음과 같이 선택 사항은 다음과 같습니다

  1. 는 리뷰 2 열이 되세요, 중 해당 테이블에 대한 외래 키 인, NULL이 될 수 있습니다. 이것은 하나의 리뷰가 둘 모두에 관한 것일 때를위한 것입니다.

  2. 리뷰 및 평가 리뷰 테이블이 있습니다. 그런 다음 각 테이블의 검토 필드 (검토 테이블 없음)를 모두 갖게됩니다.

  3. 대안 (2)는 리뷰 테이블과 함께 사용하는 것이고,이 2 개의 테이블은 각각 ​​리뷰와 만화/애니메이션에 대한 외래 키인 2 개의 필드 만 가지고 있습니다 (따라서 리뷰와 만화/아니메).

  4. 아니메와 만화가 1 대 1로 연결되어 있고 그 테이블 대신 리뷰 링크가 있어야합니다.

  5. (편집) 모든 필드가 모두 Anime/Comics에서 동일하거나 유사한 경우 하나의 테이블로 병합하고 Anime/Comics를 나타내는 유형 필드를 추가 한 다음 문제를 추가 할 수 있습니다 가버 리다. 이는 기본 테이블 옵션과 유사합니다.

편집 : (자주, 하나에 대한 리뷰를 선택하지 않으려면)을 2 개 테이블은 아마 최고의 성능을 제공하지만, 적절한 인덱스로 성능이 위의에 문제가 안됩니다 .

+0

연필과 종이를 들고 나와 설명하는 것을 이해하도록 노력하십시오. –

+0

1 등 감사합니다. 2 열 이상 올리는 거 맞지? 그렇지 않으면 의미가 없습니다. 2 위. 기존 테이블 옵션에 속성을 추가하는 것과 같습니다. 맞습니까? Anime 테이블이 있고 리뷰, 게시물 등의 속성이있는 열을 삽입합니다. 이것은 많은 관계와 더 비슷합니다. 이 상황에서 유용할까요? 4 일. 왜 그럴까요? 나는 애니메이션 - 만화 - TV 시리즈의 직접적인 관계가 필요하지 않다. * (나는 생각한다). –

+1

@fat_mike (1) 예, 2 열 추가. (2) 리뷰 컴피티, 리뷰 애님, 만화, 애니메이션. (3)은 2와 같을뿐 아니라 리뷰도 포함합니다 (ReviewComics, ReviewsAnime에는 리뷰 및 만화/애니메이션 테이블을 연결할 필드 만 있습니다). (4)는 TV 시리즈와 만화 및 애니메이션을 가리키는 리뷰를 가질 수있게하여 리뷰와 만화/애니메이션을 직접 연결하는 것에 대해 걱정할 필요가 없습니다. 그래서 리뷰, 만화 및 애니메이션에 TVSeries FK가 있습니다. 그들은 모두 실행 가능하며 각각에 약간의 장점과 단점이 있습니다. – Dukeling

2

필자가보기에 일대일 관계에서는 외래 키 관계를 피하는 것이 더 좋습니다. 그것은 하나의 많은 관계에 가장 적합합니다.

+0

기존 테이블에 리뷰 속성을 추가 하시겠습니까? 예를 들어 만화는 (ID, 제목, 날짜, 등급, 검토 날짜) 및 TV 시리즈 (ID, 제목, 시즌, 에피소드, 날짜, 평점, 검토 날짜) 등이 될 것입니다. –

+0

예 ..! 또한 여러 테이블과 비교할 때 성능을 향상시킵니다. 더 많은 테이블을 만들면 더 많은 조인을 작성해야합니다. 나는 그것을 정당화 한 것 같습니다. 내 대답에 동의하면 도움을 요청하십시오. – Chella

+0

내가 혼란 스럽다고 말했기 때문에 나는 동의하는지 모른다. 그럼 개인 프로젝트 그래서 그것은 지속적으로 업그레이 드됩니다 프로그래밍을 시작하기 전에 내가 만들 수있는보다 효율적이고 확장 가능한 데이터베이스를 갖고 싶습니다. 예를 들어 리뷰 및/또는 게시물 또는 다른 테이블에서 앞으로 더 많은 속성을 추가 할 수 있습니다.그래서 14-15 열의 테이블이 너무 무겁지는 않습니까? 답변 주셔서 감사합니다. –