2012-07-20 2 views
2

웹 응용 프로그램에서 작업 중입니다. 주요 기능은 일부 데이터를 사용자에게 제공하는 것입니다. 그러나 이러한 데이터에는 여러 유형이 있으며 각 데이터는 다른 방식으로 제시해야합니다.많은 데이터 유형 - 하나의 테이블 대 여러 테이블

예를 들어, 결과 3 권, 저자 3 명, 파일 3 개를 나열해야합니다.

책은 (char) TITLE, (text) DESCRIPTION로 설명됩니다.

작성자는 (char) TITLE, (char) DESCRIPTION로 설명됩니다.

파일은 (char) URL로 설명됩니다.

또한 모든 유형에는 ID, DATE, VIEWS 등의 입력란이 있습니다. 도서 및 작성자는 간단한 HTML 코드로 표시되며 파일은 웹 사이트에 외부 리더를 삽입합니다.

세 가지 다른 테이블을 만들고 이러한 데이터를 가져 오는 동안 JOIN을 사용해야 하나의 테이블을 만들고 거기에 모든 유형을 저장해야합니까? 어떤 태도가 더 효율적입니까?

추가 정보 - 실제로 엄청난 양의 레코드가있을 것입니다.

답변

4

이 작업을 수행하는 논리적 인 방법은 데이터베이스 설계의 3NF 규칙을 따르는 작업을 별도로 유지하는 것입니다. 엄청난 양의 데이터가있을 때 다른 종류의 결과를 특별히 검색하는 동안 더 많은 유연성을 제공합니다. 모든 것을 하나의 테이블에 집어 넣는 것은 DB 습관이 절대적으로 나쁜 것입니다.

+0

+1 , 그들을 별도로 유지하고 필요에 따라 그들을 합류하십시오. – davidethell

+0

실제로는 거의 모든 유형이 혼합되어 있으므로 질의는 항상 JOIN을 사용하게 될 것입니다. 쿼리에서 한 가지 유형의 데이터 만 얻는 것은 매우 드뭅니다. 그 사실에도 불구하고 3 개의 테이블을 생성해야합니까? – Jason

+0

그리고 약 5-6 가지 유형이 있음을 언급하는 것을 잊어 버렸습니다. – Jason

1

이는 데이터 구조에 따라 다릅니다.

1 : 1 관계가있는 경우 한 권의 책에 작성자가 한 명 있다고 가정하면 레코드를 한 행에 넣을 수 있습니다. 한 권의 책에 여러 명의 작가가 있거나 한 저자가 여러 권의 책을 가지고 있다면 별도의 테이블 booksauthors을 설정하고 두 외래 키가있는 테이블 author_has_books을 연결해야합니다. 이렇게하면 중복 된 데이터를 저장하지 않고 불일치를 피할 수 있습니다. 여기 dB 정상화에 대한

더 많은 정보 :

http://en.wikipedia.org/wiki/Database_normalization

0

그들을 분리하고 관계를 만들 수 있습니다. 이렇게하면 많은 데이터를 가져 오기 시작할 때 7 대신에 한 번에 3 개의 필드 (IE를 방금 보면 책을 볼 때)를 호출하기 때문에 성능이 향상됩니다.

관련 문제