在 SQL Server 中实现一对零或一关系

发布于 2024-12-08 03:09:23 字数 363 浏览 0 评论 0 原文

我正在使用 Entity Framework 4.1 数据库第一种方法。我使用过旧数据库。在我的 edmx 文件(基于旧数据库中的表创建实体类)中,某些实体之间存在一对零或一关联。

尽管我探索了数据库的表以及它们之间的关系,但我没有发现一对零或一关系是如何在数据库中实现的。

有关更多信息,我在 edmx 文件中放置了数据库图的一些屏幕截图及其关系和对应实体的属性:

在此处输入图像描述” >
<img src=

I'm using Entity Framework 4.1 database first approach. I've used legacy database. In my edmx file which created entity classes based on tables in the legacy database, there is a one-to-zero-or-one association between some entities.

Although I explored the tables of database and relation between them I didn't find out how one-to-zero-or-one relation have been implemented in database.

For more information I put some screenshots of my database diagram and the property of its relation and correspondent entities in edmx file:

enter image description here
enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橘香 2024-12-15 03:09:23

数据库中的 1-0..1 关系是直接可见的。它建立在 Course 和 OnlineCourse 表之间,其中 Course 在关系 (1) 中是主要的,而 OnlineCourse 依赖于 CourseID 上配置的 FK。 FK 也是在线课程的 PK = 它必须是唯一的,因此它是 0..1。

数据库“总是”使用 1 - 0..1,因为真正的 1 - 1 不能有效地用于数据插入。 1 - 1 表示左必须插在右之后,但右必须插在左之后 = 不可能。因此,1 - 0..1 用于左为主的情况,必须插入右之前,右为从属,必须插入左之后。

The 1-0..1 relation in your database is directly visible. It is built between Course and OnlineCourse tables where Course is principal in relation (1) and OnlineCourse is dependent with FK configured on CourseID. FK is also PK of the OnlineCourse = it must be unique and because of that it is 0..1.

Database "always" uses 1 - 0..1 because real 1 - 1 cannot be effectively used for data insertion. 1 - 1 means that left must be inserted after right but right must be inserted after left = impossible. Because of that 1 - 0..1 is used where left is principal and must be inserted before right and right is dependent and must be inserted after left.

手心的海 2024-12-15 03:09:23

如果数据库表已经设计为 1:1 关系(或 1:0-1),那么 EF 将很好地使用它,尽管它会将子表的名称复数化(如果您让它复数化)。

基本方法是创建一个外键(就好像您正在建立一对多关系),然后在外键字段上放置一个唯一索引。这是您想要实现的目标吗?

这也可能有帮助:设计 1:1 和 1:m 关系SQL Server

顺便说一句,1-1 关系通常是不必要的,并且/或者是需要重新思考的数据库设计的症状。不过,听起来你继承了这个设计……我都知道了!

If the database tables are already designed with a 1:1 relationship (or a 1:0-1), then EF will work with it just fine, although it will pluralize the child table's name (if you let it pluralize).

The basic approach is to create a foreign key (as if you were making a 1:many relationship), then put a unique index on the foreign key field. Is that what you are aiming to accomplish?

This might help, too: Designing 1:1 and 1:m relationships in SQL Server .

On a side note, 1-1 relationships are often not necessary and/or a symptom of a database design that needs rethinking. However, it sounds like you inherited the design... I know all about that!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文