[英]postgreSQL/PostGIS database: Table inheritance
我對PostgreSQL和數據庫設計還比較陌生,並且當前對INHERITANCE的方法以及將其應用於我正在創建的postgreSQL / PostGIS數據庫中的某些表是否相關還是感到困惑。 我將不勝感激任何建議。
下面介紹了我不確定的三個表方案:
1)第一種情況是一個生態表,其中包含有關動植物的信息(見下文)。 除resourceGroup和name屬性外,所有屬性都采用相同類型的輸入值,而不管記錄是指植物群還是動物群。 resourceGroup和名稱中的值是指來自不同查找表的,特定於動物或植物的值。
CREATE TABLE "ecology" (
"ecology_id" serial NOT NULL,
"resourceType" varchar(5) # ie. flora, fauna
"resourceUse" varchar(20) NOT NULL,
"resourceGroup" varchar(20) NOT NULL # takes input from different lookup tables depending if it is flora (ie. roots, seeds...) or fauna (ie. mammal, reptile ..)
"native" boolean NOT NULL,
"name" varchar(30) NOT NULL, # ie species name
"englishName" varchar(30) NOT NULL,
"NTStatus" varchar(20) NOT NULL,
"description" varchar(255) NOT NULL,
CONSTRAINT "ecology_pk" PRIMARY KEY ("ecology_id")
);
問題:繼承就是這里的答案。
CREATE TABLE "fauna" (
"faunaGroup" varchar(5)
"name" varchar(30) NOT NULL,
"englishName" varchar(30) NOT NULL) INHERITS(ecology);
..和類似的植物,然后從生態表中刪除那些屬性。 或者有一種方法可以在resourceType設置為ie時在生態表上指定約束。 植物,那么resourceGroup和name字段中的輸入值僅限於分別引用植物名稱和植物群的查找表,反之亦然?
2)
另一種潛在的繼承表方案涉及表文檔。 該表存儲有關不同類型的文檔編制方法(即)的信息和URL。 報告AV,圖像,表格等。 這里的問題是,某些文檔類型(例如報表和AV)與另一個主要實體(即)共享多對多關系。 圖像和形式是一對多的。 除此之外,它們共享相同類型的屬性信息
問題:繼承是解決不同類型關系的一種方式,還是我應該將它們全部組合在一個表(文檔)中,並將其視為多對多關系?
3)
該表方案涉及某些存儲文化敏感信息的表。 這些表中的某些屬性基本上具有三個訪問限制:公共,僅男性和僅女性。
問題:繼承還是這里的前進之路。 就是 創建分別針對男性和女性的兩個子表,這些子表繼承了父表的全部或部分屬性。 然后,您可以分別加密男女子表? 或者,更簡單或更好的解決方案是在模式級別考慮性別和公共受限訪問。 所以。 為每種工作類型(即護林員工作,計划等)分別創建一個男女模式和小組角色,以及一個存儲對公眾開放的信息的模式。
提前致謝。
最好的里克。
生態/動物/植物區系:
我認為繼承是建模的一種可能方法。 但是,您似乎錯誤地定義了表: ecology
表應該具有動植物都有的屬性,並且您只能在添加的繼承子代中指定這些行。
說明文件:
這也可以與繼承一起使用。 由於所有繼承子項本身都是表,因此它們可以與其他表一起具有外鍵約束。
男女可見的信息:
繼承不能很好地建模。 如果要基於數據庫角色將可見性限制為表行,請查看“行級安全性”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.