我怀疑许多与业务相关的软件都是为了管理一组特定的信息而设计的;客户、订单、销售线索或产品和/或组合。根据我的大部分经验,情况都是如此。所有其他表格通常都是支持主要表格的数据。
如果情况并非如此,那么暂时假设是这样:)因为就我而言,我们的数据库中实际上只有 1-2 个主表(大约 20-30 个);即客户表。
是否对这些类型的表格应用了特殊的照顾/设置,以使表格变得更容易管理或保持合理的大小?由于性能或其他原因,我现在还没有到需要做些什么的地步,而且可能暂时不会,但当时间到来时,我想知道从哪里开始。
我已经标记了 mysql,但实际上,任何有关与其他 RDBMS 一起使用的其他技术的信息仍然有用。
最佳答案
在考虑将有限的优化时间花在哪里时,集中精力于关键表是合理的。基本上,您希望确保在频繁使用的表上真正实现表设计的所有良好实践。
- 您想要确保 primary key很好。通常这将是一个自动编号整数。另外,请确保聚集索引基于此键。 (这是你已经知道的基本内容,但我必须把它搞清楚。)
- 将重复数据替换为与查找表相关的数字,以提高性能和数据完整性
- 使用正确的数据类型,但尽可能使用最小的数据类型,但不要在大小上冒险。 (这并不比许多其他事情重要,只要数字字段周围没有巨大的 char 字段即可。)
- Indexes !你必须拥有它们。在设计时将它们作为整体方案的一部分进行考虑,但它们也可以在以后很好地应用以获得良好的效果。了解覆盖索引。 客户听起来像是查询次数多于更新次数的东西。如果是这样,请不要对您的索引感到害羞。
但是,尽管到目前为止使用最频繁的是少数表格,但总体设计方案仍然是最重要的。
- 获取您的数据 Normalized 。这是一切的关键。如果您最终得到很多表,其中的数据看似相关,请不要担心。更糟糕的是,将不完全 1 比 1 的数据塞入现有表中。现代数据库非常擅长处理多个表;但他们不能错误地相互关联数据。
- 具有良好、简单的外键关系。任何表上的第一列通常应该是一个自动编号键,其名称与表类似(“客户”表的“客户 ID”)
- 首先要为表格命名良好
您问的这个问题确实很大。我总结说要集中精力于关键表格,但最重要的是该表格与其他表格的关系。
关于c# - 对特别影响少数表的数据库的特别关注/设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2045047/