首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时为同一字段添加另一个查找表

何时为同一字段添加另一个查找表
EN

Database Administration用户
提问于 2016-12-20 23:00:34
回答 1查看 944关注 0票数 5

示例

  • 表配方使用菜谱类别的查找表;
  • 表成分使用查找表的成分类别;
  • 他们有着多到多的关系;
  • 配方类别将不被用作配料类别,反之亦然;

问题

它应该是单独的查找表,还是我可以使用一个带有额外列的表来识别它是成分还是配方类别?这会影响优化或查询速度吗?

大约100个记录,如果一个表;分隔表,它是5和95。该表将在同一查询中显示两次以上。

我在相关的Q&A 内容相同的关系表,自定义解决方案中测试了这些想法。在前端和内部管理方面处理数据比较容易,但是如果数据库增长,数据完整性可能是一个问题。

Clarifications

  1. 一个菜谱可以按一个以上的菜谱分类。
  2. 一个配料可以分为多个成分类别。
  3. 在商业领域有5个菜谱类别。
  4. 在商业领域中有95个成分类别。
  5. 三个具体配方类别的例子是Omivorous,Vegetarian,Vegan。
  6. 三种具体的配料类别是谷物,肉类,鱼类。

我一直在测试这两种解决方案,但由于记录太少,我没有看到任何改进或性能损失。此外,在构建前端时,使用一个模型和一个列比使用两个模型更容易,但这是一个小问题。

关于堆栈溢出的相关问答:一个查找表还是多个查找表?

EN

回答 1

Database Administration用户

发布于 2016-12-21 13:12:32

大多数人认为一个查找表来统治他们所有的反模式。您可以看到很多原因,其中许多在一个查找表还是多个查找表?中都有很好的描述,您已经看到了。

开发人员倾向于使用这种设计的主要原因是,代码重用的概念已经在他们的头脑中被灌输了这么长时间,创建两个看起来和行为相同的东西似乎是非常不自然的。

然而,在设计数据库时,代码重用并不是最高的优点。数据完整性是最高的优点。每个开发人员都知道,重复的代码更难操作和维护,并可能导致困难的bug。糟糕的数据完整性甚至可能更糟。

有一些方法可以获得合理的代码重用,即使在具有相同列结构的整堆查找表的情况下也是如此。您可以创建一个接口(例如ILookupTable)来处理与管理查找表有关的所有CRUD操作和其他操作,然后您只需要每个表都有一个非常薄的代码层来区分每个表。您可以在不丢失声明性引用完整性优点的情况下重用此代码,而声明性引用完整性是维护高数据质量的最重要工具之一。

在设计数据库时,要像数据建模师一样思考,而不是程序员。它将引导您找到一个设计良好的数据库,它将成为构建代码的坚实基础。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/158751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档