Mysql 我应该只为几行创建一个表吗?

Mysql 我应该只为几行创建一个表吗?,mysql,performance,database-design,Mysql,Performance,Database Design,大家好,我在网上没有找到我的问题的答案。我的数据库中有一些表只包含很少的行,不会有更多的行。例如: 1- status_orders (payed, declined, shipped, delivered, returned, ...) 2- payment_means (card, cheque, bank transfer, paypal, ...) 知道我有一个多语言网站,我必须创建其他包含翻译的表,这意味着更多的连接 你认为我应该继续这样做,还是简单地使用一个PHP数组并将其密钥存

大家好,我在网上没有找到我的问题的答案。我的数据库中有一些表只包含很少的行,不会有更多的行。例如:

1- status_orders (payed, declined, shipped, delivered, returned, ...)

2- payment_means (card, cheque, bank transfer, paypal, ...)
知道我有一个多语言网站,我必须创建其他包含翻译的表,这意味着更多的连接

你认为我应该继续这样做,还是简单地使用一个PHP数组并将其密钥存储在数据库中,或者有其他更好的方法来处理这个问题


非常感谢

我认为将这些值存储在数据库中是件好事

如果另一个系统希望从您的数据库查询数据,则该系统可以知道这些状态是什么。如果这些状态被封装在代码中,情况就不会如此

但是,对于翻译,我看到了3个选项:

  • 有一个存储它们的表(将导致更多的连接,正如您刚才提到的)
  • 表的每个值都有一个字段,并将翻译存储为JSON数组格式

    [{语言:“fr”,值:“类型描述”},{语言:“en”, 值:“描述类型”}]

  • 在PHP代码中存储类型的翻译


我认为将这些值存储在数据库中是一件好事

如果另一个系统希望从您的数据库查询数据,则该系统可以知道这些状态是什么。如果这些状态被封装在代码中,情况就不会如此

但是,对于翻译,我看到了3个选项:

  • 有一个存储它们的表(将导致更多的连接,正如您刚才提到的)
  • 表的每个值都有一个字段,并将翻译存储为JSON数组格式

    [{语言:“fr”,值:“类型描述”},{语言:“en”, 值:“描述类型”}]

  • 在PHP代码中存储类型的翻译


有时候,一行一列的表格是有意义的。因此,奇数大小的桌子有时是“正确使用的东西”

PHP是一个诱人的替代方案,但是如何“持久化”信息呢?如果您可以
将这个小表连接到其他东西,这可能比混合使用隐喻(SQL和PHP)更简单


将数据库视为所有数据的“真相来源”。将您的客户机(PHP)视为“业务逻辑引擎”,它处理数据并“呈现”数据(例如,通过网页)。

有时候,一行一列的表格是有意义的。因此,奇数大小的桌子有时是“正确使用的东西”

PHP是一个诱人的替代方案,但是如何“持久化”信息呢?如果您可以
将这个小表连接到其他东西,这可能比混合使用隐喻(SQL和PHP)更简单


将数据库视为所有数据的“真相来源”。将您的客户机(PHP)视为“业务逻辑引擎”,处理数据并“呈现”数据(例如,通过网页)。

感谢Elfrone的回复。事实上,我们不与任何外部系统,可能会要求我们的数据库为这些领域!对于翻译,我现在使用了两个表(status_orders&status_orders_translations),但希望对此进行优化。但就数据库设计而言,仅仅使用表存储不断增长的数据不是更好吗?我认为使用表存储这些类型的数据没有任何问题。至于你的翻译表,你可以做一个通用的。在这种情况下,无需在每次向模型中添加实体时创建表。只是一个建议!这绝对没有问题,但我刚刚听说,如果一个表包含永远不会增长的数据,那么最好以不同的方式进行处理,因为我们可能会有无用的连接,这可能会减慢查询速度,这就是为什么我要发布此文:)感谢Elphone的回复。事实上,我们不与任何外部系统,可能会要求我们的数据库为这些领域!对于翻译,我现在使用了两个表(status_orders&status_orders_translations),但希望对此进行优化。但就数据库设计而言,仅仅使用表存储不断增长的数据不是更好吗?我认为使用表存储这些类型的数据没有任何问题。至于你的翻译表,你可以做一个通用的。在这种情况下,无需在每次向模型中添加实体时创建表。只是一个建议!这绝对没有问题,但我刚刚听说,如果一个表包含的数据永远不会增长,那么最好换一种方式处理,因为我们可能会有无用的连接,这可能会减慢查询速度,这就是为什么我要发布它:)谢谢Rick的回复。“坚持信息”是什么意思?好的,在一个大约有8个表的查询中,我已经运行了一些测试,并注意到多加入1个或2个表会使查询时间增加约0.2秒。此外,所讨论的表将需要为每个表添加一个用于翻译的附加表:/“持久化”意味着将数据保存在某个位置,以便在下次运行程序时将其记住。如果没有什么需要保存,那么这一点就没有意义了。
JOIN
不应该增加那么多;让我们看一下查询和
SHOW CREATE TABLE
;也许缺少了一个索引,尤其是“综合”索引。啊,好的,谢谢你的解释;)无需保存任何内容,因为这些值不会更改,或者我可能会尝试添加新订单状态,但不会每年发生一次以上…:)目前我还没有完成db设计,我将在开始时更新我的初始帖子;)嘿,我最终还是按照你的建议使用数据库中保存的数据:)我有一个新问题:一个订单可以有多个跟踪编号,所以我创建了一个新表(订单跟踪),有两列(订单id,跟踪编号),那么我是否应该创建另一列自动递增,作为PK?或者将订单id和跟踪号设置为PK?谢谢