2010-06-25 37 views
1

我有很多表將使用url'slug'查找。例如'新聞'和'博客'都有'slug'字段,它被定義爲教義數據庫模式中的唯一字段。Sql:跨多個表(教條/ symfony)獨特的字段限制(slu 012)

有沒有什麼辦法可以在這兩個表格上擴展這種獨特性:例如,如果有一篇新聞報道爲slug =「好故事」,那麼如果我嘗試將其作爲博客文章的子彈輸入,就會失敗?

感謝 湯姆

+0

您是否得到了您正在尋找的答案?如果是這樣,你能接受嗎?如果不是,你能澄清你還在尋找什麼嗎?通常情況下,你提供的信息越多,他可以幫你的可能性就越大。 – MaasSql 2010-07-01 00:38:26

回答

2

取決於你在哪裏開發。如果您正在維護應用程序,那麼我同意Bob Jarvis的建議。看起來像一堆斷開的代碼。

你所描述的是一個屬於它自己的表的實體。考慮到這一點,我就可以對它進行建模。

 

tbl_slug 
-------------------- 
slug 
slug_type 
-primary key (slug, slug_type) 
-constraint - slug is unique to table 


tbl_news 
-------------------- 
id 
fk_slug_slug 
fk_slug_type 
-constraint - fk_slug_type = 'news' 


tbl_blog 
-------------------- 
id 
fk_slug_slug 
fk_slug_type 
-constraint - fk_slug_type = 'blog' 

2

據我所知,你不能有一個獨特的contstraint跨越表。處理它的一種方法是創建一個SLUG表,其中'slug'字段將成爲主鍵。您需要在'新聞'和'博客'上嘗試將新的'slug'插入到SLUG表中的INSERT觸發器。如果'news.slug'或'blog.slug'已更新,您可能還想在'news'和'blog'上放置UPDATE觸發器來更新SLUG.slug。

我希望這會有所幫助。