1

Web配置器(用于可定制的电子文章)应通过Web用户界面将用户生成的配置保存到MySQL数据库。数据库表设计:是否规范化

可用的选项是静态的,数量为10到20个不同的选项。

我找不出哪个解决方案更具优势。我正在寻求一些建议,因为这是数据库设计中的一个常见问题。

溶液#1

1表:

配置:

  • 选项2
  • 选项3
    • ID
    • 选项1等

    溶液#2

    2表和1 relationTable(见下文)

    配置:

    • ID

    选项:

    • ID

    不要紧,对我来说,是否将与连接表或对期权的一侧的外键单向多对一关联一个unidirectinal一对多关联。

    的问题是,是否有一个表10至20列,每次每个选项,最终需要从时间更改数据库模式时,如果有新的选项是必需的

    OR

    有大约10至20相关的选项条目每个配置项。

    配置表可能增长到每月约2000个配置=>每月20000到40000个选项条目。

    查询配置及其关联选项的查询时间,如果选项表超过1.000.000个条目可能很高,右(解决方案#1)?查询具有大约20列的单个表的行是否更好?(解决方案1)? 也许这也是一个标准。 任何解决方案是否存在缺点/优缺点?

  • +0

    恕我直言:如果每个配置都必须存在每个选项,则解决方案1。否则解决方案2.它只是更稳定。 – Mikey

    +0

    @Mikey有些选项可能为空,所以解决方案仍然是一个选项。解决方案2对于增强更加稳定,但我想知道这些查询是否会变得无用。我只会编辑我的文章并提及这个想法。谢谢! –

    +0

    那么一些选项是不可空的?这些选项必须位于同一个表中(不可为空列)。在其他情况下,不能确保他们的存在。性能可能是一个问题,但它是一个优化:对于那个和现代的数据库来说,在联接方面相当不错。 – Mikey

    回答

    0

    我会用解决方案#2去。我还将为应用程序添加缓存层options表,该表将为每个configuration_id请求创建一个json对象(数组,列表或任何您的语言支持的),并且已经查询,处理并准备使用所有选项。