我第一次使用数据库(SQL CE 3.5)并且我不确定如何定义表之间的关系,以后(我认为)我将不得不使用连接来选择一些值另一个表中的一个字段。
_________ __________ __________
MY TABLE| | TABLE A | | TABLE B |
--------- |---------| |---------|
OrderID | | a_Text | | b_Text |
--------- |---------| |---------|
a_Text |
---------
b_Text |
---------
当我在[MY TABLE]中定义a_Text的值时全部实现时,我只希望能够为[表A]中定义的a_Text设置一个值(并再次为b_Text设置)。
答案 0 :(得分:0)
您想要的是a_Text
字段上的Foreign Key Constraint,该字段会针对该特定字段值强制MY_TABLE
/ TABLE_A
之间建立链接。
这是数据库关系,因此应在数据库级别定义,如果需要,还应在模型级别定义。大多数现代ORM技术,例如EntityFramework / NHibernate在模型级别表示相同的关系方面做得非常好,或者至少使其非常简单 - 如果您直接通过数据库创建上下文,EF将自动执行此操作。
通过VS Designer使用SQLCE创建关系非常简单 - Walkthrough: Creating a SQL Server Compact Database给出了在两个表之间添加关系的示例。
根据您的要求,我不建议您将a_Text
中的值字段(TABLE A
)作为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