2009-08-24 11 views
1

我有一個簡單的表,自動增量ID和一個文本列。 id(int),value(nvarchar)sql db設計檢索和提交標稱值

在另一個用戶表中,我將此ID作爲外鍵。當我使用Linq to Sql檢索數據時,我在一個簡單的調用中獲得關聯ID的文本值。

那麼當我需要保存到用戶表中時,我只有文本而不是ID?只有id存儲在usertable中。

我想這不正確嗎?

+0

不是你不能這樣做,但爲什麼你複雜2表。有一個名爲用戶的表使用自動編號列並完成。 – madcolor 2009-08-24 21:27:46

+0

我的意思是,用戶選擇1或5個項目,這些項目名稱可能會改變。我想在用戶表中存儲項目標識而不是名稱。我是否被迫跟蹤代碼中的id,或者數據庫能否與檢索時自動匹配相應ID的文本? – zsharp 2009-08-24 21:33:50

+0

您應該跟蹤該ID。當你從數據庫中抓取一個'用戶'時,你應該創建一個具有屬性的用戶對象,這樣你就可以隨時引用它。即user.id = 123 user.text = mytext ..等等。在你的場景中,你應該使用ID作爲鍵。 – madcolor 2009-08-25 01:40:54

回答

1

您可能需要更好地解釋您的模式。從目前爲止,這聽起來像你有兩個表,一個值表和一個用戶表。

Values table 
    id (int) 
    value (varchar) 

User table 
    id (int) 
    value_id (int) 
    ... 

這聽起來像你那麼得到你想要在用戶表中與之匹配從價值觀表中的一些值的記錄或記錄更新一些信息。如果這是正確的,你會想要類似的東西:

UPDATE User u 
JOIN Values v ON v.id = u.value_id 
SET <update field>=<update value> 
WHERE v.value = <matching value> 
+0

我最終做了這樣的事情,但創建另一個表爲3個文本類別分配值是不是很好? – zsharp 2009-08-28 17:36:56

+0

一般來說,如果您希望能夠表示一對多關係(例如,如果一個用戶可以與0-3值關聯),那麼使用這兩個表格設計比做像放置三個可互換字段value_1,value_2和value_3放入表格中。 – Randy 2009-08-28 18:21:43