2011-08-16 2 views
0

나는 이것에 상당히 새롭기 때문에 당신이 나와 함께 감내해야 할 수도 있습니다. 나는 육상 랭킹이있는 웹 사이트를위한 데이터베이스를 개발하고 있으며 얼마나 많은 테이블이이 목표를 달성하는 가장 효율적인 방법인지 궁금합니다.육상 경기 랭킹 데이터베이스 - 테이블 수

나는 현재 2 개 테이블이, 내 모든 주자 다음과 같은 필드가 포함되어 있습니다 (잠재적으로 약 600 사람/기록)의 세부 사항 보유 '운동 선수'라는 테이블 :

중반 (회원 ID를 - 기본 키)
FIRSTNAME
LASTNAME

생일
국적

그리고 t을 모두 보유하고 두 번째 테이블, '결과' 상속인의 공연이 다음 필드 :

중반
이드 (이벤트 ID - 기본 키)
EVENTDATE
eventcategory (도로, 트랙 등 필드)
eventdescription (100m, 200m, 400m 등)
시간


거리

위치

두 번째 테이블에는 이미 약 2000 개의 레코드가 있으며 잠재적으로 약 30 개의 트랙 이벤트, 10 개의 필드, 10 개의 도로, 교차로, 릴레이, 다중 이벤트 등이 있고 시간이 지나면 4 배가됩니다 내 첫 번째 테이블에 600 명의 운동 선수가 있는데, 두 번째 테이블에있는 많은 양의 기록과 같습니다.

그래서 제가 궁금한 점은 트랙, 필드, 크로스 컨트리 등을 분리하기 위해 여러 테이블을 갖는 것이 더 깔끔하고 효율적이라는 것입니까?

성능을 기준으로 사람들 결과를 주문하려면 데이터베이스를 사용하고 싶습니다.

별도의 각 유형 테이블 (트랙으로 이벤트 테이블을 아프게하지 마세요, 필드 - 당신은 더 나은 내가 모방하는 것을 시도하고 이해하려는 경우,이 웹 사이트 http://thepowerof10.info

답변

0

내 생각에 대해 살펴 , 등). 데이터가 동일한 테이블에 모두있는 경우 데이터를 쿼리하는 것이 훨씬 쉬워집니다.

그렇지 않으면 두 테이블이 잘 보입니다. 시작하는 것이 좋습니다.

1

스키마를 변경해도 결과 수가 변경되지는 않습니다. 개최지를 별도의 테이블로 분리하더라도 각 이벤트마다 참가자 당 하나의 결과 만 남습니다.

별도의 장소 테이블을 가질 경우 얻을 수있는 이점은 더 나은 정규화입니다. 주자는 많은 결과를 가질 수 있으며 주어진 장소는 주어진 날짜에 많은 결과를 가질 수 있습니다. 모든 결과 기록에서 장소 정보를 반복하지 않아도됩니다.

색인에주의하고 싶을 것입니다. 모든 테이블에는 기본 키가 있어야합니다. 선택할 때 WHERE 절에서 사용하는 열에 대한 색인을 추가하십시오.

여기는 discussion about normalization이며 그 의미는 무엇입니까?

PS - 수천 건의 레코드가 문제되지 않습니다. 대형 데이터베이스는 기가 또는 테라 바이트 단위입니다.

+0

그래서 당신은 내가 가정 장소에 대한 별도의 테이블을 가지고 있다면 당신은 단지의 라인을 따라 뭔가에있는 모든 장소 하나 하나 개의 테이블을했을 :
VID (장소 아이디 - 기본 키)
venuename

테이블에 다른 것이 많을까요? 아니면 각 장소마다 별도의 테이블이 있습니까? 장소의 수는 아마도 300 범위에있을 가능성이 있습니다. 그래서 나는 추정하지 않습니까? – Mark