Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL은 테이블 상속을 지원할까? 외래 키로 구현하는 방법

MySQL은 테이블 상속을 지원하지 않습니다

MySQL은 PostgreSQL과 같은 데이터베이스에서 제공하는 테이블 상속(Table Inheritance) 기능을 공식적으로 지원하지 않습니다. 대신 MySQL은 외래 키(Foreign Key) 제약 조건을 사용하여 부모-자식 관계의 테이블 구조를 구현합니다.

즉, 상속이라는 개념 자체는 없지만, 외래 키를 활용하면 참조 무결성(Referential Integrity)을 보장하면서 상속과 유사한 계층 구조를 만들 수 있습니다.

외래 키로 상속과 유사한 구조 만들기

아래 예제에서는 두 개의 테이블을 생성하고, 이 둘 사이에 외래 키 관계를 설정하는 과정을 단계별로 살펴보겠습니다.

1단계: 부모 테이블(Parent_Table) 생성

먼저 부모 역할을 할 테이블을 생성합니다. ParentId 컬럼을 기본 키(Primary Key)로 지정합니다.

mysql> create table Parent_Table
-> (
-> ParentId int,
-> PRIMARY KEY(ParentId)
-> );
Query OK, 0 rows affected (3.59 sec)

2단계: 자식 테이블(Child_Table) 생성

다음으로 자식 역할을 할 테이블을 생성합니다. ChildId 컬럼이 부모 테이블을 참조하도록 정의합니다.

mysql> create table Child_Table
-> (
-> ChildId int references Parent_Table,
-> PRIMARY KEY(ChildId)
-> );
Query OK, 0 rows affected (0.73 sec)

3단계: 외래 키 관계 설정

마지막으로 ALTER TABLE 문을 사용해 두 테이블 간의 외래 키 관계를 명시적으로 추가합니다. 이렇게 하면 Child_Table의 ChildId 값은 반드시 Parent_Table의 ParentId에 존재하는 값이어야 합니다.

mysql> alter table Child_Table add constraint FK_Child Foreign key(ChildId) references Parent_Table(ParentId);
Query OK, 0 rows affected (2.28 sec)
Records: 0 Duplicates: 0 Warnings: 0

정리

MySQL은 테이블 상속을 직접 지원하지는 않지만, 위와 같이 외래 키 제약 조건을 사용하면 부모-자식 관계를 안정적으로 구현할 수 있습니다. 이 방식은 잘못된 데이터가 자식 테이블에 삽입되는 것을 데이터베이스 차원에서 차단해 주므로, 데이터 무결성을 유지하는 데 매우 효과적입니다.