여러 테이블을 사용하여 관계형 데이터베이스에 대한 Party Model 디자인을 사용하기로 결정했습니다. 하위 객체를 나타냅니다.SQL Party 관계 모델 - Sub와 Super 클래스의 일관성
this post과 this one을 가이드로 사용하여 다중 테이블 상속을 사용하여 Party 모델을 구성하기로 결정했습니다. 받는 데이터가 여러 테이블에 분산되어
Parties
- ID, AUTO_INCREMENT
- Type
- Shared_Data
- Primary Key (ID, Type)
User_Sub
- ID
- Type, Default 'U'
- User_Data
- Primary Key (ID, Type)
- Foreign Key 'User-Party' (ID, Type) references (Parties.ID, Parties.Type)
Organization_Sub
- ID
- Type, Default 'O'
- Organization_Data
- Primary Key (ID, Type)
- Foreign Key 'Organization-Party' (ID, Type) references (Parties.ID, Parties.Type)
때문에, 나는 읽을 수 있도록하고 싶습니다 업데이트 : 여기
는 기본 내가 (의사 SQL에서) 뭘하는지의 표현입니다 한 번에 부모 및 자식 테이블. 독서는 좋은이며, 수행 할 수 있습니다 :CREATE VIEW Users as
SELECT P.*, U.User_Data FROM Parties P
Inner Join Users_Sub U on P.id=U.id, P.type=U.type
그러나, 모두에 삽입하는 것은 MySQL은 가능하지 않다 (는 다른 맛이있다?). 그런 식으로 다중 테이블 상속을 수행 할 수 있습니까? 모든 사용자 및 조직 열을 파티 테이블에 넣으면이 문제가 해결 될 수 있지만 꽤 많은 null 필드가 남아 있습니다.
통찰력은 매우 감사하겠습니다.
흠, 모든 해결 방법이있는 것 같습니다. 실제로 다중 테이블 상속이 실제로 발생하지 않습니까? 현재 옵션 중 하나 인 스토어드 프로 시저를 사용하거나 두 개의 쿼리를 수행하는 것만이 유일하게 실행 가능한 것처럼 보입니다. 데이터가 파티 테이블에 존재하지 않기 때문에 트리거를 사용할 수 없습니다. – funseiki
이 관계 유형이 확실히 사용됩니다. 그것은 실제로 네 번째 정규 형식입니다. – udog
일반적으로 단일 테이블 상속으로 구현됩니까? 트리거 제안에 따르면 모든 하위 열이 상위 테이블에 있어야합니다. 그렇게하면 중복성이 생깁니다. 나는 자식 테이블을 모두 제거 할 수 있습니다. 내가 누락 된 것이없는 한. – funseiki