SQL数据库、实体数据模型和1到1实体
本文关键字:实体 数据库 数据模型 SQL | 更新日期: 2023-09-27 18:20:40
我是EDM的新手,过去写过很多ADO.Net的东西。我有三张桌子:
**Product:**
Prod_ID - PK
**Product_MaxLoan**
Prod_ID - PK
**Product_MinLoan**
Prod_ID - PK
这些表托管在MSSQLServer2005中,尚未配置FK或约束,它们将具有概念上的1对1关系。例如,ID为1的产品的每一行,Product_MaxLoan和Product_MinLoan中都会有一行ID为1。
在VisualStudio2010中,我希望正确设置EDM,以便基数设置为1比1。我之前在表和下面的设置中有FK约束,但是,这只允许0..1基数(我想,这是为了满足产品可能没有Product_MaxLoan或Product_MinLoan的事实)。
**Product:**
Prod_ID - PK
**Product_MaxLoan**
ID - PK
Prod_ID - FK
**Product_MinLoan**
ID - PK
Prod_ID - FK
问题:
- 对于在SQLServer2005中设置这些表,您有什么建议?对于EDM中的1对1关系,您会设立FK吗
- 您能否在SQL 2005中设置一个PK关系,EDM在从数据库导入时将读取该关系
- 一个产品包含大约300种特性,因此包含所有这些特性单个表中的数据将是较差的数据库规范化(因此许多1-1表)。最好的做法是把所有这些属性合并为一个EDM类?我的直觉反应是打破它正如它在数据库中的结构一样(这是我的ADO传统脱颖而出),为产品
非常感谢你的建议。
致问候,
标记
在数据库中使用此配置:
**Product:**
Prod_ID - PK
**Product_MaxLoan**
Prod_ID - PK, FK (to Product)
**Product_MinLoan**
Prod_ID - PK, FK (to Product)
这将在数据库级别以及EF中强制建立一对一关系。关系本身将是1-0..1(Product
可以在没有MaxLoan
和MinLoan
的情况下存在),因为实际的1:1不可能存在于数据库中。实数1:1要求两个实体始终存在=如果第二个实体不存在,则不能插入第一个实体,如果第一个实体不存,则无法插入第二个。如何在不关闭引用完整性的情况下插入它们?