조인관련 질문입니다.
머리속으로 생각하다가 도저히 답이 나오지 않아 이렇게 질문드립니다.
비디오 정보가 있는 테이블이 있습니다. 비디오에는 해당하는 장르가 있게 마련인데 비디오 한 개당 장르의 관계는 일대 다의 관계를 가지고 있습니다. 즉, 한 비디오 정보에 액션, 호러와 같이 여러개의 장르가 올 수 있다는거죠. 또한 하나의 장르에 여러개의 비디오 정보가 올 수 있습니다. 정형적인 다대다의 관계입니다. 그래서 이것을 해결하기 위해 [비디오장르]라는 테이블을 만듭니다. 배우도 장르와 같은 식으로 생각해보면 [배우] 테이블을 생성할 수 있고, [비디오] 테이블과의 다대다의 관계를 해결하기 위해 [비디오배우] 라는 테이블을 생성합니다. 이런 식으로 하면 감독도 뽑을 수 있겠죠. 하지만 감독은 생략하겠습니다. 너무 복잡해지니까요. ㅡ.ㅡ;
[비디오]
비디오번호
비디오명
[장르]
장르번호
장르명
[비디오장르]
비디오번호
장르번호
[배우]
배우번호
배우명
[비디오배우]
비디오번호
배우명
이해를 하셨나 모르겠네요. ㅠ.ㅠ;
아무튼 위의 정보를 가지고 비디오 하나의 정보를 뽑아온다고 하면 대충 이런 쿼리가 만들어질겁니다.(단, [비디오]의 한 로우 정보에는 반드시 장르와 배우가 있다고 가정)
SELECT [비디오].비디오명, [장르].장르명, [배우].배우명
FROM [비디오]
JOIN [비디오장르] ON [비디오장르].비디오번호=[비디오].비디오번호
JOIN [장르] ON [장르].장르번호=[비디오장르].비디오번호
JOIN [비디오배우] ON [비디오배우].비디오번호=[비디오].비디오번호
JOIN [배우] ON [배우].배우번호=[비디오배우].배우번호
WHERE [비디오].비디오번호=1
이 때 비디오번호가 1의 장르가 2개가 있고 배우가 3개가 있다면 이런 식으로 아마 나올겁니다.
비디오명, 장르1, 배우1
비디오명, 장르1, 배우2
비디오명, 장르1, 배우3
비디오명, 장르2, 배우1
비디오명, 장르2, 배우2
비디오명, 장르2, 배우3
이렇게 여러개의 정보가 있을 때는 조인으로 한 번에 뽑아도 가공하지 않으면 힘들 듯 보이는데요. 정말 이렇게 한 번에 뽑아서 처리하는게 맞는건지 아니면 장르, 배우 정보를 각각 조인해서 처리해야 되는건지 무지 궁금합니다.
고수님들의 답변 부탁드리겠습니다. 그럼, 수고하세요.
|