2008-09-30 40 views
4

在Ruby-on-Rails中,這被稱爲「多態關聯」。如何在MS Access中創建(Type,ID)(又名'polymorphic') - 外鍵列?

我在我的應用程序的多個Commentable的事情,對每個表都低於:

Post 
id | title | text | author (FK:Person.id) | ... 

Person 
id | name | ... 

Photo 
id | title | owner (FK:Person.id) | path | ... 

我想補充一個Comments表如下:

Comments 
id | commentable_type | commentable_id | text | author (FK:Person.id) 

我明白,我以這種方式丟失數據庫的參照完整性,但唯一的其他選擇是具有多個Comments表:PostComments,PersonComments,PhotoComments,

而現在的問題是:

如何建立一個形式,將神交如何通過正從Comments.commentable_typeComments.commentable_id表名,然後ID做查詢,第一?

回答

4

這種技術在SQL世界中俗稱爲「子類」。對於一個工作示例(SQL Server語法,但很容易適用於MS Access),請參閱David Porta's blog.

在您的方案中,所有註釋通用的數據項目將位於您的註釋表中;任何特定於每種類型的東西都在諸如PhotoComments等專業表格中。注意,FK應該是ID的兩列化合物加上該類型,這在某些情況下經常被忽略,但這對於參考完整性至關重要。您不希望在PersonComments表中顯示類似於照片評論的內容。

+0

那麼,你如何做到這一點?也就是說,什麼是好的UI方法? – 2009-01-23 18:54:23

0

我相信很多人爲這種事情製作元表。幾乎和你描述的完全一樣。