2013-03-04 60 views
0

我與數據庫首次(SQL CE 3.5)工作,我不能肯定我如何定義,其中後(我認爲)表之間的關係,我不得不選擇場使用連接爲另一個表中的一個字段選擇某個值。SQL CE 3.5 - 從另一個表

_________  __________ __________ 
MY TABLE|  | TABLE A | | TABLE B | 
---------  |---------| |---------| 
OrderID |  | a_Text | | b_Text | 
---------  |---------| |---------| 
a_Text | 
--------- 
b_Text | 
--------- 

噹噹我定義a_Text中的值是所有實現[MY TABLE]我只希望能夠如[表A](和再次b_Text)定義爲a_Text設定的值。

回答

0

這裏您需要的是a_Text字段上的Foreign Key Constraint,該字段強制執行該特定字段值的MY_TABLE/TABLE_A之間的鏈接。

這是一個數據庫關係,因此應該在數據庫級別以及如果需要的話在模型級別上定義。大多數現代ORM技術,例如EntityFramework/NHibernate,在模型層次上表現出相同的關係做了很好的工作,或者至少做到這一點非常微不足道 - 如果您直接通過數據庫創建上下文,EF會自動執行。

這是很簡單的創建通過VS設計師使用SQLCE的關係 - Walkthrough: Creating a SQL Server Compact Database給加兩個表之間的關係的一個例子。


根據您的要求,我不會在TABLE A建議讓您的值字段(a_Text)作爲PK。最大的擔憂之一是,如果更新密鑰,則需要在整個其他引用表中級聯該更改。引入surrogate key並使您的a_Text字段本身爲unique key本身更靈活。

My Table  Table A Table B 
    --------  ------- ------- 
    OrderID  a_ID  a_ID 
    a_ID   a_Text  a_Text 
    b_ID 
+0

雖然這肯定是我希望建立我還沒有找到一個例子a_Text不是數字式的關係模型。我想能夠使用nvarchar(12)。 – 2013-03-04 14:57:47

+0

@SimonJohnson肯定可以使用帶有文本類型值的外鍵約束('GUID'本質上只是大字符串,它們工作得很好)。 – James 2013-03-04 15:19:33

+0

我想這(設置a_Text場是在[表A]一個PK),它不停地失敗,直到我重新啓動的Visual Studio(2008年),感謝您的幫助:) – 2013-03-04 15:35:20