代码之家  ›  专栏  ›  技术社区  ›  Lumpi01

数据库设计自己的列或只是查询

  •  0
  • Lumpi01  · 技术社区  · 7 年前

    我有一个电影电子表格,在大多数国家,这些电影有相同的名字,除了一些。 这就是为什么我有一张额外的电影名称表。

    电影: 身份证件, […]

    MovieName: 身份证件, 电影ID(FK电影) 姓名, 国家

    如果有不同的名字,每个人都应该得到所有名字的概述。 我应该每次检查这部电影是否有不同的名字吗? 或者一个额外的电影专栏“不同的名字”(bool)会更好吗?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Joel Brown    7 年前

    你要问的是 去正规化 它将可派生数据从子表移动到父表。

    非规范化用于避免性能影响,这在需要时非常有用。但是它有一个缺点,那就是您必须做额外的工作来保持父表和子表之间的数据一致。因为还有额外的工作要做,还有更多的失败点,所以这些可能会失去同步。首先,避免不一致的数据是标准化的主要目的之一。

    在以下情况下使用非规范化通常是可以接受的:(a)没有其他实用选项来使代码充分执行;(b)数据或多或少是只读的(即,预计不会发生变化,或者至少不会发生很大变化)。这里的基本原则是:1.不要预先优化和2。管理你的风险。

    基于此,您可以决定您的情况是否需要非规范化。

        2
  •  0
  •   serge    7 年前

    在数据本地化的情况下,所提出的双表解决方案是常见的。

    您也可以在 Movie 表中只存储不同的名称 MovieName . 但是,您需要维护此数据完整性(唯一 movie_id + name )除了独特 电影明星 + country .