[英]SQL foreign keys with multiple tables
如果我有三個表:
music_genres
-----------
music_type_id
genres
[other unique fields]
minerals
--------
mineral_id
mineral
[other unique fields]
verbs
-----
verb_id
verbs
[other unique fields]
這些填充有:
rock
jazz
funk
punk
rock
boulder
stone
shale
rock
wobble
shake
vibrate
現在,假設我正在為每個項目顯示一個網頁,每個項目都使用單獨的模板,並將此信息存儲在下表中:
pages
-----
page_id
page_url
template_url
foreign_key_id
包含以下數據:
/page/music-genres/rock/
/music-genres-template.html
1
/page/verbs/rock/
/verb-template.html
1
/page/minerals/rock/
/mineral-template.html
1
/page/minerals/rock/images/
/mineral-images-template.html
1
模板將知道外鍵與特定的相關表相關,因此知道的礦物模板可以查詢該表的其他字段的礦物表。 但是,我沒有任何參照完整性。 如果從礦物表中刪除了岩石,由於外鍵不是唯一的,我不能使用級聯刪除從頁面中刪除行。 我可以想出很多方法來巧妙地解決這個問題:
我認為必須有一種更好的方法來存儲我的數據或維護數據庫的完整性。 有什么想法嗎?
我認為您的問題出在這里
模板將知道外鍵與特定的相關表相關,
那就是知識,它不會存儲在數據庫的任何地方。
我看到了兩種解決方法:
假設您實際上是為每種類型的“事物”創建單獨的表,則對於每種類型的事物,都應有一個different列,以引用頁面表中的相應表,將所有列設置為null(除了一個)(可以通過一個約束)
有一個“主事物”表,該表具有唯一的ID,然后頁面可以引用該ID,並且該列具有用於標識類型的列和指向其余唯一數據的列,該列將存儲在不同的表中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.