FK你选哪个?

发布于 2025-01-19 22:45:40 字数 283 浏览 4 评论 0原文

如果 FK 在成员或环境中,它是正确的还是可以互换的。这取决于如何思考这些关系。前任。成员设置或设置成员。如果是MemberSetting,FK 将在member.member_id 中,否则如果是SettingMember,FK 将在setting.member_id 中。查询结果完全相同。关系时如何思考。给我会员设置,或者这就是会员的设置。

member
--------
member_id PK FK
username

setting
--------
member_id PK
color

Is it right or interchangeable if FK in member or setting. it dependents how to think the relations. ex. MemberSetting or SettingMember. if MemberSetting, FK will in member.member_id else if SettingMember, FK will in setting.member_id. it totally same result in query. how to think when relations. give me member settings, or thats setting of member.

member
--------
member_id PK FK
username

setting
--------
member_id PK
color

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

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

发布评论

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

评论(1

撩心不撩汉 2025-01-26 22:45:40

在一对多关系中,外键应该位于该关系“多”端的表中。

在您的示例中,如果它与我在其中找到 membersettings 表的其他数据库类似,我希望在 settings 中看到外键code>table,因为一个成员可能有很多设置。反之则不然。

演示:

create table member (
  member_id int primary key,
  username varchar(20) not null
);

create table settings (
  member_id int not null,
  setting varchar(20) not null,
  value varchar(64) not null,
  primary key (member_id, setting),
  foreign key (member_id) references member(member_id)
);

以上是如何定义表格的假设示例。通过将外键放入 settings 表中,它会限制 settings 表中的行,以便 成员中必须存在行 表具有相同的member_id 值。但反之则不一定。即使成员在引用它的 settings 表中有零行,它也可以存在。

In a one-to-many relationship, the foreign key should be in the table on the "many" side of that relationship.

In your example, if it were similar to other databases where I found tables for member and settings, I would expect to see the foreign key in the settings table, because one member may have many settings. Not the other way around.

Demo:

create table member (
  member_id int primary key,
  username varchar(20) not null
);

create table settings (
  member_id int not null,
  setting varchar(20) not null,
  value varchar(64) not null,
  primary key (member_id, setting),
  foreign key (member_id) references member(member_id)
);

The above is a hypothetical example of how one could define the tables. By putting the foreign key in the settings table, it restricts rows of the settings table so that a row must exist in the member table with the same member_id value. But the opposite is not necessarily true; a member can exist even if it has zero rows in the settings table that reference it.

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