gpt4 book ai didi

postgresql - 拥有 2 个或更多具有相同列的表是好的做法吗?

转载 作者:行者123 更新时间:2023-11-29 14:38:00 28 4
gpt4 key购买 nike

我正在创建一个网络应用程序,让用户可以搜索餐馆和咖啡馆。由于我目前除了类型之外没有其他数据来区分这两者,所以我有两种存储餐馆列表的选择。

  1. 对餐厅和咖啡馆使用同一张表,并使用枚举(文本)列说明条目是餐厅还是咖啡馆。
  2. 创建两个单独的表,一个用于餐厅,一个用于咖啡馆。

我永远不需要执行从两者收集数据的查询,所以我想对我来说唯一重要的是性能。作为 PostgreSQL 的更好选择,您有什么建议?

最佳答案

典型的数据库建模适用于单个表。主要原因是可维护性。如果您有两个具有相同列的表,并且您的客户决定他们想要添加一个列,比如营业时间。您现在必须编写两组代码来创建列、读取新列、更新新列等。另外,如果您的客户希望您开始跟踪条柱怎么办,现在您需要第三张表和第三组代码。它很快就会变得凌乱。最好有两个表,一个包含大部分列(名称、位置等)的数据表(比如 Establishment),然后是第二个表,它是一个“类型”表(比如 EstablishmentType),其中一行为 Restaurant,咖啡厅、酒吧等。当然还有连接两者的外键。这样您就可以拥有“X”类型并且只需要维护一组代码。

当然也有异常(exception)情况,您可能需要单独的表格:

  1. 性能源于庞大的数据集。 (这取决于您的服务器,但在 Postgres 中应该重要之前我们至少讨论了数十万行)。如果这是我建议的原因 table inheritance在提高性能的同时保持大部分适当的可维护性。
  2. 咖啡馆和餐馆在您的网站上有两组完全不同的功能。如果您的全部代码都在说如果是 Cafe,则执行此操作,如果是 Restaurant,则执行此操作,那么您已经有两组代码需要维护,代码中还增加了 if 逻辑的麻烦。如果是这样的话,两个单独的表是一个更清晰和合乎逻辑的选择。

关于postgresql - 拥有 2 个或更多具有相同列的表是好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41492145/

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