它应该是单独的查找表,还是我可以使用一个带有额外列的表来识别它是成分还是配方类别?这会影响优化或查询速度吗?
大约100个记录,如果一个表;分隔表,它是5和95。该表将在同一查询中显示两次以上。
我在相关的Q&A 内容相同的关系表,自定义解决方案中测试了这些想法。在前端和内部管理方面处理数据比较容易,但是如果数据库增长,数据完整性可能是一个问题。
我一直在测试这两种解决方案,但由于记录太少,我没有看到任何改进或性能损失。此外,在构建前端时,使用一个模型和一个列比使用两个模型更容易,但这是一个小问题。
关于堆栈溢出的相关问答:一个查找表还是多个查找表?
发布于 2016-12-21 13:12:32
大多数人认为一个查找表来统治他们所有的反模式。您可以看到很多原因,其中许多在一个查找表还是多个查找表?中都有很好的描述,您已经看到了。
开发人员倾向于使用这种设计的主要原因是,代码重用的概念已经在他们的头脑中被灌输了这么长时间,创建两个看起来和行为相同的东西似乎是非常不自然的。
然而,在设计数据库时,代码重用并不是最高的优点。数据完整性是最高的优点。每个开发人员都知道,重复的代码更难操作和维护,并可能导致困难的bug。糟糕的数据完整性甚至可能更糟。
有一些方法可以获得合理的代码重用,即使在具有相同列结构的整堆查找表的情况下也是如此。您可以创建一个接口(例如ILookupTable)来处理与管理查找表有关的所有CRUD操作和其他操作,然后您只需要每个表都有一个非常薄的代码层来区分每个表。您可以在不丢失声明性引用完整性优点的情况下重用此代码,而声明性引用完整性是维护高数据质量的最重要工具之一。
在设计数据库时,要像数据建模师一样思考,而不是程序员。它将引导您找到一个设计良好的数据库,它将成为构建代码的坚实基础。
https://dba.stackexchange.com/questions/158751
复制相似问题