2012-09-11 4 views
0

레코드 컬렉션 데이터베이스를 구축 중입니다. 제목, 아티스트, 형식, 국가, 날짜, 레이블 등이있는 기본 릴리스 테이블이 있습니다. 이들 각각은 외부 키가 릴리스로 다시 연결된 별도의 테이블입니다. 내 질문은 별도의 테이블에있는 모든 외래 키가 릴리스의 하나의 기본 키 (id)에 연결되는지 아니면 각각 릴리스의 해당 인덱스 정수 키에 연결되는지 여부입니다. 그리고 인덱스에 대해 말하면 - 검색 할 위의 모든 것에 대해 별도의 인덱스를 작성해야합니까? 귀하가 제공 한 정보를 감안할 때mySQL 하나의 주 테이블에 외래 키가있는 여러 테이블을 연결하기 위해 여러 개의 인덱스가 필요합니까?

감사

+0

릴리스 테이블 – sarsnake

답변

1

, 당신은

자료

ID, 제목, ArtistID 순, FormatID, CountryID, 날짜

LabelID을 다음과 같은 테이블 구조를 가질 것

아티스트 ID (릴리스 ID 테이블의 아티스트 ID에 대한 외래 키), 이름 등

형식 ID (릴리스 테이블 FormatID에 외래 키), 이름, 등

요법 등

는 상기 모두에 별도의 인덱스를 작성하는 다음 필요 어느 것이 검색 될까요?

는 테이블 편집을 할

검색을 계획하는 방법에 따라 달라집니다 : 릴리스 테이블에 자신의 아이디로

OK 그래서 각 테이블의 외부 키의 각 연결을 - 기본 ID가 맞지 않습니까?

정확히. ArtistID는 ID가 기본 키인 Artists 테이블에 연결되지만, 릴리스 테이블에서는 외래 키입니다. 날짜를 제외하고 나머지 필드는 똑같은 아이디어입니다. 그것은 예를 들어있을 것입니다 검색에 관해서는

, 검색 아티스트가 아티스트의 출시, 그리고

당신이 인덱스를 생성에 연결한다 (표 이름, 성 또는 그룹 이름이됩니다) ArtistFirstName 및 ArtistLastName 입력란 - 이는 Artists 테이블의 입력란이며 검색이 검색 할 항목입니다. 아티스트의 릴리스를 표시하려면 아티스트 ID에 대한 아티스트 및 릴리스 테이블에 가입해야합니다 (검색 후 얻을 수 있음).

관계형 데이터베이스 디자인 및 정규화에 대해 자세히 읽으면 도움이 될 것입니다.

+0

에 ID 열이 없으므로 각 테이블의 각 외래 키가 릴리스 ID의 고유 ID에 연결됩니다. 기본 ID는 아니지만 맞습니까? 검색은 예를 들어 해당 아티스트의 릴리스에 연결해야하는 검색 아티스트 (테이블에는 이름, 성 또는 그룹 이름이 있음)가됩니다.아티스트 검색이 필요하다고 생각하지 않습니다. 인덱스가 아티스트 테이블에 있어야하고 릴리스 테이블이 아닌 Label 테이블이 있어야합니다. – user1356553

+0

내 대답을 편집했습니다. – sarsnake

+0

감사합니다. 나는 이것을 제대로하고 있다고 생각한다. 이것은 내가 여기 게시 한 매우 큰 계획의 시작일뿐입니다. http://fanoss.ca/records-db.jpg 아직 누락 된 것은 다 대다 관계에 대한 "찾아보기 테이블"입니다. 그러나 그것을 통해 나는 비닐 인너 슬리브, 비닐 인서트, CD 인서트, 테이프 인서트, 관련성, 악기, 보컬, 공동 작업자 및 역할 중 몇 가지를 볼 수 있습니다. 나는 그저 함께 모으기 전에는 효과가 없을 것이 없다는 것을 확실히하고 싶습니다. – user1356553

관련 문제