我有一個應用程序,用戶運行「實驗」,實驗有一些「主題」,每個主題都有一個「設置」被用來研究這個問題)。如何使用數據庫設計「模板」系統
所以我基本上這些表:
Experiment
----------
id (PK)
name
Subject
-------
id (PK)
name
experiment_id (FK)
setting_id (FK)
Setting
-------
id (PK)
value_a
value_b
value_c
的關係基本上是這樣的:
Experiment ---* Subject *--- Setting
一旦用戶創建了一個新的實驗,並增加了一個題目進行實驗,他也需要定義設置(用於研究主題的設備)。
但是,我不想讓用戶每次定義設置,我還想提供一種機制來加載/保存設置模板。
什麼是一個好的數據庫設計呢?我想出了
一切有一些缺點:
添加「SettingTemplate」表中基本上都有一個名稱+相同 colums的設置。然後行可以被複制。但是,我認爲 複製事情通常不是一個好主意。
將一個名爲FK的「SettingTemplate」表添加到設置表中的 條目中。但是,這意味着設置/模板的更改 將直接影響所有實驗和周圍的主體。這是我想避免的。
因爲我認爲第二種選擇更糟糕,我更喜歡第一種。但是,我敢打賭有一個更好的方法來做到這一點......你能幫忙嗎?
Postgres支持[表繼承](http://www.postgresql.org/docs/current/static/ddl-inherit.html)。爲'Setting'和'SettingTemplate'創建一個公共父項可以讓你保持結構同步,而不需要顯式複製表定義。 –
謝謝,我還不知道表繼承。這可能對1)中的某些內容有用。 – katzenversteher