gpt4 book ai didi

mysql - 在考虑高性能的情况下,为相似类型的数据保留一个表或多个表,哪个是最好的

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:48 25 4
gpt4 key购买 nike

我正在为像 ERP 这样的销售和采购应用程序设计数据库,并使用 MYSQL 作为 RDBMS,我对为销售和采购实体创建表以便为每个模块(销售/采购)使用单个表或为每个模块使用多个表有疑问长期实体(销售订单、销售发票、销售返回、采购订单、采购发票、采购返回)。以下是我的用例。

我的应用程序将有销售订单、销售交货、销售发票、销售返回和贷方通知单以及采购模块的相同实体,所有这些实体都可以在该模块中输入链接。像Sale Order可以转化为Sale Delivery或者Sale Order and Sale Delivery可以转化为Sale Invoice。因此需要维护引用 b/w 模块的每个实体。

现在,我有点困惑将所有这些都保存在一个表中,每个模块说“sale_entity”和“purchase_entity”具有实体类型或者我应该为每个实体类型创建单独的表,比如 sale_order,sale_invoice,sale_return,purchase_order,purchase_invoice , purchase_return 等

以下是我对这两种情况的看法:

单表:我真的想为每个模块将其保存在单个表中,但我担心长期运行时的性能,它会快速增加表的大小并可能降低性能。

多表:一次对所有实体类型的记录进行报表管理、维护关系和取数据会比较困难,需要union和all。

我的理解是大尺寸的表比小尺寸的表执行速度慢,如果我错了请指正。

请点亮它,并建议我应该如何进行。

谢谢

最佳答案

经验法则:如果两个表具有相同(或几乎相同)的列,则将其设为一个表,而不是两个。您可能需要添加一列来区分这两种类型的数据。您可能需要让一列为NULL,如果它适用于一个用户而不适用于另一个用户。过多的 NULLable 列 --> 不要合并表格。

经验法则:一对多和多对多关系需要有两个或三个表。 (第三种是多对多。)

“Orders”通常涉及“Order Items”。即 Orders 中的一行映射到一个或多个 OrderItems。这些应该是单独的表。

“购买”与“返回”? 也许它们可以在同一张表中,并通过数量的符号来区分?

关于mysql - 在考虑高性能的情况下,为相似类型的数据保留一个表或多个表,哪个是最好的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32646014/

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