簡體   English   中英

postgreSQL / PostGIS數據庫:表繼承

[英]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)

該表方案涉及某些存儲文化敏感信息的表。 這些表中的某些屬性基本上具有三個訪問限制:公共,僅男性和僅女性。

問題:繼承還是這里的前進之路。 就是 創建分別針對男性和女性的兩個子表,這些子表繼承了父表的全部或部分屬性。 然后,您可以分別加密男女子表? 或者,更簡單或更好的解決方案是在模式級別考慮性別和公共受限訪問。 所以。 為每種工作類型(即護林員工作,計划等)分別創建一個男女模式和小組角色,以及一個存儲對公眾開放的信息的模式。

提前致謝。

最好的里克。

  1. 生態/動物/植物區系:

    我認為繼承是建模的一種可能方法。 但是,您似乎錯誤地定義了表: ecology表應該具有動植物都有的屬性,並且您只能在添加的繼承子代中指定這些行。

  2. 說明文件:

    這也可以與繼承一起使用。 由於所有繼承子項本身都是表,因此它們可以與其他表一起具有外鍵約束。

  3. 男女可見的信息:

    繼承不能很好地建模。 如果要基於數據庫角色將可見性限制為表行,請查看“行級安全性”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM