gpt4 book ai didi

database - 拥有仅包含主键字段的表是概念错误吗?

转载 作者:行者123 更新时间:2023-12-02 17:48:42 25 4
gpt4 key购买 nike

我正在设计一个数据库来存储一些艺术家的信息。这些艺术家可以属于一个或多个组织。从这些组织中,我只想存储他们的名字,我正在考虑与这些组织创建一个表,这些组织只将名称作为主键,没有别的。有一个只有主键字段的表是一个概念错误吗?在这种情况下,我会感谢一些解决该问题的建议。

最佳答案

Is the fact of having a table with just the fieds of the primary key a conceptual error?

不是自己。在完全合法的情况下,所有字段都包含一个 PK。

在这种特殊情况下,组织名称​​是一个键,但这并不一定意味着它应该是键——您可以“发明”另一个键更小(通常是整数)并且更容易维护并使成为主要的,如下所示:

enter image description here

organizarion_id 被称为“代理键”,这样做的一些优点包括:

  • 子 FK 会更 slim (因为只有整数会迁移到子 FK,而不是整个字符串)。
  • 您可以在不更新 organization_id 的情况下更新 organization_name,因此不会将此更新级联给子级。
  • 与更复杂的自然键相比,小整数代理对 ORM 可能更友好。

缺点:

  • 可能需要更多的加入。
  • 需要多一个索引,每增加一个索引都会带来开销(即使在基于堆的表中,尤其是在 clustered tables 中)。

如您所见,这是一个平衡问题,只有您拥有足够的领域知识来做出正确的决定。

注意:organization_artist 中的字段顺序很重要。如果您需要有效地查询给定组织的艺术家,请使用上面显示的顺序,如果您需要给定艺术家的组织,请使用上面显示的顺序。如果您需要两个方向,您将需要在这两个字段上的另一个复合索引(在 PK 下方的索引旁边),但顺序相反。如果您只能使用一个索引,请考虑对该表进行聚类(如果您的 DBMS 支持)。

关于database - 拥有仅包含主键字段的表是概念错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11266790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com