1 대 다수의 관계
를 모델링 한 후 표준 모델링 방법은을 참조하는 것입니다 Child 테이블의 부모 테이블. 부모의 키 열 중 하나 (일반적으로 부모의 기본 키 (PK))를 통해 전달됩니다.
parent
-------------
PARENT_ID PRIMARY KEY, // PK for the parent table
OTHER_COL
...
child
-------------
CHILD_ID PRIMARY KEY, // PK for the Child Table
PARENT_ID // <-- Should this column be here? = Yes
CONSTRAINT FK_ChildParent FOREIGN KEY(PARENT_ID) REFERENCES parent(PARENT_ID)
추가 많은 : 많은 테이블 parent_has_children
동시에, 또한 관계를 통해 referential integrity을 적용 할 RDMBS을 장려하기 위해 외래 키 (FK) 참조 열 (child.PARENT_ID
)에 제한하는 것이 좋습니다 는 중복되므로 child
당 정확히 하나의 행을 갖게되고 곧이 테이블을 다른 테이블에서 추가/제거 된 행과 동기화 된 상태로 유지하는 데 부담이됩니다.이 동기화를 유지하지 않으면 결과가 혼동/모순이됩니다. 관계의 완전성).
Re : 부모님은 자녀에 대해 어떻게 알 수 있습니까? 주어진 부모
자식 레코드가 부모 외래 키 열을 필터링 자식 테이블에 간단한 쿼리를 사용하여 찾을 수 있습니다 :이 같이
SELECT ...
FROM child
WHERE PARENT_ID = myParentId;
보통 일반적인 쿼리입니다, 그것은 항상 좋은 idea child.PARENT_ID
이 인덱싱되는지 확인하는 것이 좋습니다. 일부 RDBMS 버전에서는 기본적으로 모든 외래 키에 대해이 작업을 수행합니다.
엔티티 모델 (예 :ORM의 경우) 부모 엔티티는 일반적으로 child
인스턴스를 포함하는 콜렉션을 가지며 하위 엔티티에서 스칼라 외래 키 child.PARENT_ID
'열'이 완전히 제거되거나 부모의 예 :
class Parent
{
ParentId,
Child[] Children,
// ...
}
class Child
{
ChildId,
Parent Parent, // Optional, allows bidirectional navigation
// ...
}