假设我有一个应用程序,用户可以用语言编写故事。
当用户选择语言时,可能有两种情况:
我的问题是:我在哪里保存这些自定义语言?我应该使用“支持的语言”将它们放在表格中还是创建一个单独的表格?
我一直在考虑以下论点:
单独的表:
一张桌子:
由于我对数据库设计很陌生,我无法决定,所以我问你:更好的方法是什么?
答案 0 :(得分:2)
首先:你的问题可能会被关闭,因为(我认为)没有技术上正确的答案,只有不同的作者可以告诉你他们的个人意见作为答案。所以你的问题主要是基于意见的。
坚持下去:我的意见将是一个表格中的额外列。这将允许您快速整理,它也将(并且我认为更重要)允许用户定期选择自定义语言(如果它已经存在)(并且如果您不通过仅显示非自定义语言来阻止它)给用户)。这最终会减少重复的自定义语言。
答案 1 :(得分:1)
创建一个单独的表。除了任何空间限制外,您还应该担心数据的一致性。确保您的数据库已规范化。它在很多方面都很重要。
分析
让我们假设您的应用程序已成为病毒式传播,并且正在进行大量插入操作。在将来的某个时间,您可能希望修改表以仅存储用户的最近/实时/当前记录,因为不需要通用数据。如果您只有一个表格,那么您实际上最终会覆盖很多原始值(例如,如果您想查询 - 最常见的自定义语言 - 它将无法使用因为原来的记录现在丢失了。)
性能
不同的表格可让您选择排列可能最适合读/写的数据,即您选择索引的方式。将大量数据保存在单个表中可能会影响您的决策。
健壮/模块化
如果您有一个单独的自定义语言表,您可以根据需要更改该表。随着您的发展,可能需要插入几个列作为属性。改变庞大的桌子是不可取的,因为它有可能使系统处于滞后状态(如果你只有一张桌子并将所有东西推到那里,这将变得更加突出)。我们说,我开发了一个API,为您的自定义语言提供某种支持。您可能希望将我的标识符添加为记录。它总是更容易改变只有相关数据的表,而不是改变具有通用数据集的单个表,这在任何情况下都是不可取的。
要使此方法完美运行,您需要一个设计文档,说明插入期间的所有约束,允许NULL的属性,您将如何管理一对多关系(此&# 39; ll需要实现外键)等...
答案 2 :(得分:1)
我可能会使用单个“语言”参考表。
请告诉我们您的想法!
答案 3 :(得分:0)
单独的表格。除非出于性能原因而非专门优化,否则您应遵循以下原则:https://en.wikipedia.org/wiki/Database_normalization