2017-05-25 17 views
0

美好的一天大家,我没有在网上找到我的问题的任何答案。我在我的数据库中有一些表只包含几行,并没有更多。例如:我应该只为少数几行创建表格吗?

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

2- payment_means (card, cheque, bank transfer, paypal, ...) 

知道我有一个多语种网站,我要创建包含翻译这意味着更多的结合了其他表...

你觉得我应该继续做这样或干脆使用PHP数组并将其密钥存储在数据库中,或者有另一种更好的方法来处理这个问题!

非常感谢

回答

1

我相信将这些值存储在数据库中是一件好事。

如果另一个系统想要从数据库中查询数据,那么该系统可能知道这些状态是什么。如果这些状态被封装在代码中,情况就不会如此。

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

  • 有您存储它们的表(会导致更多的加盟就像你刚才提到的)
  • 有一个字段的每个值的表和翻译存储到JSON阵列格式

    [{语言: “FR”,值: “描述杜类型”},{语言: “EN”, 值: “描述类型”}]

  • 商店的类型在你的PHP代码的翻译

+0

感谢Elferone的回复。其实我们不会与任何可能要求我们的数据库用于这些领域的外部系统一起工作! 对于翻译,我现在使用2个表格(status_orders&status_orders_translations),但希望优化这个。但就数据库设计而言,使用表格仅用于增长数据并不更好? – Websphere

+0

我没有看到使用表来存储这些类型的数据的任何问题。至于你的翻译表,你可以做一个通用的。在这种情况下,每次将实体添加到模型时都不需要创建表格。只是一个建议! – Elferone

+0

这是绝对没有问题的,但我刚才听说如果一个表包含永远不会增长的数据,最好以不同的方式做,因为我们可能会有无用的JOINS,这可能会减慢查询速度,这就是为什么我要发布它:) – Websphere

1

有些时候是有意义的有一个排表一个列。所以,奇数大小的表有时是“正确的使用”。

PHP是一个诱人的选择,但你会如何“坚持”信息?如果你可以将这个小表替换成别的东西,那可能比混合隐喻(SQL和PHP)更简单。

将数据库视为所有数据的“真相源”。将您的客户端(PHP)视为操纵该数据的“业务逻辑引擎”“呈现”它(例如通过网页)。

+0

感谢瑞克的回复。“坚持信息”是什么意思?那么,在一个包含大约8个表的查询中,我已经运行了一些测试,并注意到使用1或2个表进行JOIN会将查询时间增加大约0.2秒。此外,讨论中的表格还需要为每个翻译提供额外的表格:/ – Websphere

+0

“坚持”意味着将数据保存到某个地方,以便在下次运行该程序时记住它。如果没有什么需要保存的话,这一点是没有意义的。 'JOIN'不应该增加那么多;让我们看看查询和'SHOW CREATE TABLE';也许缺少一个指数 - 特别是一个“综合”指数。 –

+0

好的,谢谢你的解释;)没有必要保存,因为这些值不会改变,或者我可以添加一个新的订单状态,但它不会每年发生一次......: )我现在没有完成数据库设计,我会更新我的初始职位;) – Websphere

相关问题