본문 바로가기
카테고리 없음

Table inheritance - A 를 B와 C가, B와 C가 A에게

by 찬찬2 2024. 6. 7.
import { ChildEntity, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, TableInheritance, UpdateDateColumn } from "typeorm";



export class BaseModel {
    @PrimaryGeneratedColumn()
    id: number;

    @CreateDateColumn()
    createdAt: Date;

    @UpdateDateColumn()
    updatedAt: Date;
}

// 다른 모델로 부터 상속을 받아 각자 테이블로 생성
@Entity()
export class BookModel extends BaseModel {
    @Column()
    name: string;
}

// 다른 모델로 부터 상속을 받아 각자 테이블로 생성
@Entity()
export class CarModel extends BaseModel {
    @Column()
    brand: string;
}


// Single table inheritance
@Entity()
@TableInheritance({
    // @Colum 데코레이터의 역할로써, Column 을 하나 만든다
    column: {
        name: 'type',
        type: 'varchar',
    }
})
export class SingleBaseModel {
    @PrimaryGeneratedColumn()
    id: number;

    @CreateDateColumn()
    createdAt: Date;

    @UpdateDateColumn()
    updatedAt: Date;
}

// 부모 테이블에 속하게되서 하나의 테이블로 합쳐진다.
@ChildEntity()
export class ComputerModel extends SingleBaseModel {
    @Column()
    brand: string;
}

// 부모 테이블에 속하게되서 하나의 테이블로 합쳐진다.
@ChildEntity()
export class AirplaneModel extends SingleBaseModel {
    @Column()
    country: string;
}

 

위 Entity 가 어떻게 테이블을 만들어주는지 보면...

 

댓글