[PostgreSQL] 상속 (Inheritance)

postgresλŠ” νŠΉμ΄ν•˜κ²Œλ„ ν…Œμ΄λΈ” κ°„ 상속에 λŒ€ν•œ κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
일반적으둜 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ“€μ—μ„œ μ œκ³΅ν•˜λŠ” 클래슀 상속과 λ§₯락을 κ°™μ΄ν•œλ‹€.

λ§Œμ•½ "μ‚¬λžŒ"에 λŒ€ν•œ ν…Œμ΄λΈ”μ΄ 있고

create table Person
(
    id serial primary key,
    name text,
    age int
);

κ·Έ κ΅¬μ„±μš”μ†Œλ“€μ„ κ·ΈλŒ€λ‘œ ν¬ν•¨ν•˜λŠ” "학생"에 λŒ€ν•œ ν…Œμ΄λΈ”μ΄ μžˆλ‹€κ³  κ°€μ •ν•˜κ² λ‹€.

create table Student
(
    id serial primary key,
    name text,
    age int,
    school text
);

사싀상 school을 μ œμ™Έν•œ 컬럼 μ •μ˜λ“€μ„ λΆˆν•„μš”ν•œ 쀑볡이라고 ν•  μˆ˜λ„ μžˆλ‹€.
μ΄λŸ΄λ•Œ 컬럼 μ •μ˜ μž¬μ‚¬μš©μ„ μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 것이 상속이닀.

상속을 ν™œμš©ν•΄μ„œ Studentλ₯Ό λ‹€μ‹œ μ •μ˜ν•˜λ©΄, μ΄λ ‡κ²Œ λœλ‹€.

create table Student
(
    school text
) INHERITS(Person);

그러면 μ•„λž˜μ™€ 같이 생성이 λœλ‹€.

κ·ΈλŒ€λ‘œ λ‹€ κ°€μ Έμ™”κ³ , μƒμ†κ΄€κ³„μž„μ΄ ν‘œμ‹œλœλ‹€.

ν•œλ²ˆ 상속을 ν•œλ‹€λ©΄, ν•˜μœ„ ν…Œμ΄λΈ”μ€ μ§€μ†μ μœΌλ‘œ κ·Έ μƒμœ„ ν…Œμ΄λΈ”μ— λŒ€ν•œ 동기화λ₯Ό μœ μ§€ν•œλ‹€.
κ·Έλž˜μ„œ λ‚˜μ€‘μ— μƒμœ„ν…Œμ΄λΈ”μ˜ 섀정을 λ­”κ°€ 바꾸더라도

alter table Person alter column name type varchar(100);

ν•˜μœ„ν…Œμ΄λΈ”μ—λ„ λ°”λ‘œλ°”λ‘œ 반영될 것이닀.



μ°Έμ‘°
https://www.postgresql.kr/docs/9.4/tutorial-inheritance.html