2011-06-13 102 views
0

我目前在SQL Server數據庫中有兩個連接表,其中一個包含新聞項目(newsTab)和一個表格(usrCom),它爲每篇文章捕獲多個用戶評論。SQL是需要鏈接/橋接表嗎?

我想添加另一個信息表(infoTab),它也允許用戶評論,但我希望使用現有的評論表(usrCom)來存儲這些信息。

我該如何去創建一個生成唯一ID的鏈接/橋接表,以便知道哪些表(newsTab/infoTab)註釋屬於哪個表。

NB:我編輯的消息,希望使它更清楚一點

第一個表(newsTab)

NewsId NewsContent 
--------------------- 
1   blah blah 
2   and so on 

第二個表(infoTab)

infoId InfoContent  
--------------------- 
1   some info 
2   more stuff 

評論表(與當前一樣)

commentId linksTo Comment 
------------------------------ 
1   1   user input 
2   1   random rant 

'linksTo'是第一個表中項目的foriegn鍵,所以我不能只添加一個類型列,並且如果在具有相同ID的新表中不存在一行,則會在外鍵列上發生衝突。因此,需要基於正在評論的表和Id來生成新的外鍵。

+0

這是一個棘手的一個 - 我們有做類似的數據庫,並且構建外鍵的時候,我們使用了'NOCHECK'選項。使其與巧克力茶壺一樣有用,但確實表明餐桌之間存在關係。 – 2011-06-13 13:44:09

+0

忘了說我不會爲那些已經存在的評論感到困擾,所以可以重新開始,但我有一箇中央評論表 – Spufferoo 2011-06-13 13:56:18

+1

看起來像唯一的方法是合併新聞和信息表,並添加一個類型列到那張桌子。這樣你就可以得到唯一的ID,你可以使用外鍵。 – 2011-06-13 14:20:33

回答

1

爲什麼不只是一個「類型」列到usrCom

+0

我將如何確保表中沒有重複的id,因爲我將鏈接到id,當存儲在comments表中時可能是重複的,我需要基於哪個表和id創建唯一的外鍵到,「類型」必須是關鍵的一部分 - 這就是爲什麼我認爲我需要一個橋表? – Spufferoo 2011-06-13 13:12:27

0

如果您自動生成commentId(設置主鍵),那麼您將無法獲得在usrCom表中的任何重複。另外,如果您希望爲新聞和信息表保留一張表,您應該添加一個新列以區分哪些表是哪些表(稱爲它的類型)。然後在你的查詢中,確保你指定了類型來過濾你的結果。

要查看所有評論爲newsTab:

 select * from usrCom 
     where type='newsTab' 
+0

我只想拉取newsTab中每行特有的註釋,而不是一次性註釋 - 因此需要鏈接到基於新聞或信息表中的記錄的ID(如果適合) The重複項可能位於外鍵而​​不是主鍵上 – Spufferoo 2011-06-13 15:07:30