2011-08-11 4 views
1

MySQL에서 DB 디자인에 대한 제안 사항이 필요합니다.MySQL 데이터베이스 디자인 제안

나는 Movie ID, celeb id, role id를 포함하는 Movie_Celebrity_Role 테이블을 가지고있다. 이 테이블은 영화, 명사 (CelebName & CelebID)와 역할 (예 : 제작자, 감독 등 및 respid) 간의 연결입니다.

나는 일부 필드와 같은가 상기와 유사하지만, 여기에 대신 유명인의 회사 ID를 회사 테이블에 연결되어 저장되며, 역할 등

내 문제는 생산 하우스로 다른 다른 테이블 Movie_Company_Role이다가 회사와 유명인 모두가있을 수있는 미디어 관계.

따라서 내가 MoviedID_CelebID_CompID_RoleID로 다른 테이블을 만들면 테이블을 조인 할 때 celebs 테이블과 회사 테이블이이 테이블과 Movie_celeb_role 및 Movie_comp_role과 일치 할 때 조인해야하므로 중복 오류가 발생합니다.

이 문제를 해결하는 방법을 제안하십시오.

나는 이렇게 될 내 사이트에 결과를 원하는 :

프로듀서 Celeb1 Celeb2

이사 Celeb1 Celeb3

... ... ...

미디어 관계 Celeb2 C ompany1 Company12

추신 :이 페이지에서 명사 또는 회사 링크를 클릭하면 Celeb 페이지 또는 회사 페이지로 이동하여 연예인이나 회사와 관련된 영화가 역할과 함께 표시되어야합니다.

매우 혼란
+0

그래서 동일한 테이블에서 의미 론적으로 다른 것들 (회사 역할과 "유명 인사"역할)을 저장합니까? 기업의 역할에 여분의 칼럼이 필요한 경우 어떻게됩니까? – Jacob

+0

"Media Relations (미디어 관계)"란 (컬럼)은 어떤 테이블에 있습니까? CelebId 또는 CompanyID를 저장합니까? – RKh

+0

@RPK 미디어 관계는 다시 회사 또는 개인 (연예인)이 수행 할 수있는 역할입니다. 미디어 관계는 역할 테이블의 역할 _ 이름에 저장됩니다. – Kenh

답변

0

...

당신은 무엇을 '중복 오류'를받을 수 있습니까? role_id가 역할 테이블에서 제대로 평가되는 한 괜찮습니다.

잘 모르겠다면 역할 정의에 모호한 점이 있습니다. 귀하의 예에서, 귀하의 테이블에 2 개의 role_id 값을 갖고 싶습니다. 하나는 회사를위한 것이고 다른 하나는 그 사람을위한 것입니다.

나는 당신이 이벤트를 어떻게 든하고 싶어하는지 확신하지 못합니다 ... 저는 회사가 영화에서 하나 이상의 역할을 수행 할 수 있으며 사람도 그렇게 할 것으로 기대합니다. (예 : 누군가가 감독이면서 배우가 동시에있을 수 있습니다.)

여기서는 별개의 테이블이기를 원합니다.

+0

위의 편집 된 버전의 질문을 참조하십시오. – Kenh