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