2011-01-14 4 views
1

사용자, 이벤트, 그룹, 네트워크, 페이지 중 하나에 속하는 사진 앨범에 대한 관계를 만드는 방법은 무엇입니까? 가능하다면 나중에 여러 소유자를 지원할 수도 있습니다.사진 앨범에 대한 여러 소유자 - 스키마 질문

한 가지 방법은 이들 중 하나에 FK ID가 있고 나머지가 null 인 열을 앨범 표에 포함하는 것입니다. 그러나 문제는 내가 더 많은 소유자 유형을 추가하는 것입니다. 더 많은 열을 추가하기 위해 표를 계속 변경해야합니다.

다른 방법은 이러한 소유자 유형마다 별도의 사진 표를 사용하는 것입니다.

이러한 방법 중 어느 것도 잘 확장되지 않습니다. 다른 방법은 적은 조인이 다른 소유자 확장 할 수 한 테이블의 유형 (의미에 대한 사진 앨범을 보유하고 읽기 성능을 조회하기 쉽게하는 1 요구 사항 내 #입니까?

플랫폼의 MySQL/PHP입니다.

답변

2

순전히 물리적 인 개념 데이터 모델에서 문제를 생각해보십시오. OO 작업을 수행하는 경우에도 괜찮습니다. CDM

반원은 상속 연산자입니다. 따라서 이벤트, 사용자, 네트워크, 페이지는 모두 소유자로부터 상속됩니다.

실제 모델을 생성 할 때이 설정을 사용합니다.

alt text

당신이 사진과 공통 속성을 모두 소유 할 수있는 모든 것을 하나 개의 테이블을 얻을이 방법. 그런 다음 각 자식 테이블은 부모로부터 PI를 상속받으며 해당 테이블에 고유 한 특성을가집니다. 사진 테이블의 FK가 소유자 테이블로 이동합니다.

사진에 대한 많은 소유자의 앞으로의 목표는 사진 ID 테이블의 소유자 ID에서 사진 테이블의 FK로 소유자와 사진 간의 many : to : 많은 매핑 테이블로 변경됩니다. 이러한 구조를 사용하면 정말 쉽습니다.

+0

이 작품! 나는 다른 길로 생각했다. – Cory

2

3 개의 열, 앨범 FK, 소유자 FK 및 소유자 유형이 사용자, 짝수, 그룹 등의 열거 가능 유형 인 소유자 유형을 가진 테이블을 만듭니다.

+0

"소유자 FK"라는 질문입니다. FK는 어디로 갈까요? 사용자 테이블, 이벤트 테이블, 페이지 테이블 등? 내가 아는 한 테이블에서 하나의 열로 만 FK 할 수 있거나 1 열에서 여러 테이블로 FK 할 수 있습니까? – Cory

+0

테이블 당 하나의 FK입니다. 코드는 유형에 따라 유형을 결정합니다. – JOTN

+0

JOTN이 말한 바. 예를 들어 한 앨범이 사용자 1이 소유하고 다른 앨범이 그룹 1이 소유 한 경우 두 레코드의 소유자 FK는 1입니다. 그러나 첫 번째 앨범의 유형 필드는 사용자와 일치하고 두 번째 앨범은 그룹과 일치합니다. –

관련 문제