iT邦幫忙

2025 iThome 鐵人賽

DAY 13
1

在物件導向的世界裡,繼承的應用很普遍,但其實在資料庫, table 與 table 之間,也可以建立繼承的關係,下面就來介紹要如何在 PostgreSQL 使用繼承並新增 table。

假如有一張紀錄各國城市資訊的 table  -  city ,現在要針對各國首都的發展程度進行排序,所以需要延伸 city 這張 table ,另外增加一個欄位,並產生一張新的 table  -  capitals 。因為兩張 table 差異不大, table 之間也有關聯,這時候就可以使用繼承來產生 capitals

CREATE TABLE IF NOT EXISTS public.city
(
    city_id integer NOT NULL DEFAULT nextval('city_city_id_seq'::regclass),
    city character varying(50) COLLATE pg_catalog."default" NOT NULL,
    country_id smallint NOT NULL,
    last_update timestamp without time zone NOT NULL DEFAULT now(),
    CONSTRAINT city_pkey PRIMARY KEY (city_id),
    CONSTRAINT fk_city FOREIGN KEY (country_id)
        REFERENCES public.country (country_id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
)

在 PostgreSQL 使用繼承很簡單,只要在 CREATE TABLE 的時候,加上 INHERITS 並指定要繼承的 table ,就可以完成繼承。

CREATE TABLE capitals (
  rating integer NOT NULL
) INHERITS (city);

新增完 capitals 之後可以看到,有四個欄位跟 city 一模一樣,是從 city 繼承過來的。

今天就先介紹到這裡,明天再繼續說 citycapitals 父子之間的特性。


上一篇
Day 12: 簡介 Window Functions 和比較與 Group By 的差異
下一篇
Day 14: 繼承後,父與子的特性
系列文
我所不知道的PostgreSQL 30天30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言