处理三个表之间有两个一对多关系

发布于 2024-12-16 16:32:34 字数 226 浏览 2 评论 0原文

我有一个三个表,A,B和C。A有很多B,B有很多C。设计主键和这两者之间的关系的最佳方法是什么。抱歉问一个设计问题,但我不知道是否使用

  1. 一个额外的表来映射 A(pkey) - B(pkey) - C(pkey) 或
  2. 两个额外的表来分别映射 AB 和 BC 或
  3. 使用外键关系不使用任何额外的表(如果是这样,请告诉我关键列应该如何出现)

非常感谢。

I have a three tables, A, B and C. A has many B, and B has many C. What is the best way design primary keys and relationship among these two. Sorry to ask a designing problem, but I don't know whether to use

  1. one extra table to map A(pkey) - B(pkey) - C(pkey) OR
  2. two exta tables to map A-B and B-C separately OR
  3. use foreign key relationships without using any extra tables (if so please tell me how the key columns should come)

Thank you very much.

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

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

发布评论

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

评论(3

羁拥 2024-12-23 16:32:34

选项 (3) 听起来最自然:

A: { id, *, *, ... };

B: { id, a_id references(A.id), *, *, ... }

C: { id, b_id references(B.id), *, *, ... }

查询:

SELECT ... FROM A JOIN B ON (A.id = B.a_id) JOIN C ON (B.id = C.b_id);

始终让数据库对数据中的逻辑关系进行建模,而不是相反!

Option (3) sounds like the most natural:

A: { id, *, *, ... };

B: { id, a_id references(A.id), *, *, ... }

C: { id, b_id references(B.id), *, *, ... }

To query:

SELECT ... FROM A JOIN B ON (A.id = B.a_id) JOIN C ON (B.id = C.b_id);

Always make your database model the logical relationships in your data, not the other way round!

说不完的你爱 2024-12-23 16:32:34

我会用三个。一对多关系中不需要额外的表。多方拥有指向单方的外键。

I'd use three. THere's no need for additional tables in a 1:many relationship. The many-side holds a foreign key pointing to the one-side.

极致的悲 2024-12-23 16:32:34

选项 3 是可行的方法。

A {a_pk, ...}
B {b_pk, ..., a_pk_as_fk}
C {c_pk, ..., b_pk_as_fk}

Option 3 is the way to go.

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