【问题标题】:Special care/settings for databases that hit a few tables in particular特别针对几个表的数据库的特别注意/设置
【发布时间】:2011-01-03 22:35:48
【问题描述】:

我怀疑许多与业务相关的软件旨在管理一组特定的信息;客户、订单、潜在客户或产品和/或组合。在我的大部分经验中都是这种情况。所有其他表格通常都是支持主要表格的数据。

如果不是这种情况,那么暂时假设一下 :) 因为在我的情况下,我们的数据库中实际上只有 1-2 个主表(大约 20-30 个);即客户表。

是否对这些类型的表格进行了特别注意/设置,以使表格更易于管理或保持合理的大小?由于性能或其他原因,我现在还没有到需要做点什么的地步,而且我可能暂时不会,但到时候,我想知道从哪里开始。

我已经标记了 mysql,但实际上,有关与其他 RDBMS 一起使用的其他技术的任何信息仍然有用。

【问题讨论】:

    标签: c# .net mysql database database-design


    【解决方案1】:

    在考虑将有限的优化时间花在哪里时,将注意力集中在关键表上是合理的。基本上,您希望确保真正在频繁使用的表格上进行表格设计的所有良好实践。

    • 您想确保primary key 是好的。通常这将是一个自动编号整数。此外,请确保聚集索引基于此键。 (这是你已经知道的基本内容,但我必须把它弄清楚。)
    • 将重复数据替换为与查找表相关的数字,以提高性能和数据完整性
    • 使用正确的数据类型,但要尽可能小,但不要在大小上冒险。 (这没有很多其他事情那么重要,只要在数字字段的周围没有巨大的 char 字段。)
    • Indexes!你必须拥有它们。在设计时考虑它们作为整体方案的一部分,但它们也可以在以后很好地应用以获得很好的效果。了解涵盖的索引。 Customers 听起来像是被查询的东西比更新的要多得多。如果是这样,不要对你的索引感到害羞。

    然而,尽管少数表格是目前使用最频繁的,但您的总体设计方案仍然是最重要的

    • 拥有您的数据Normalized。这是一切的关键。如果您最终得到很多表,其中包含看似相关的数据,请不要担心。更糟糕的是,将不是相当 1 比 1 的数据塞进现有表中。 Modern DB 擅长处理多个表;但它们不能错误地相互关联。
    • 具有良好、简单的外键关系。任何表的第一列通常应该是自动编号键,其名称类似于表(Customers 表的 CustomerID)
    • 首先要为您的表命名

    您提出的问题确实很大。我会总结说要专注于关键表,但最重要的是该表与其他表的关系。

    【讨论】:

    • +1 这里有很多很好的信息。我知道大部分内容,除了涵盖的索引,我一定会调查的。谢谢。
    • 是的,认为这是您已经知道的大多数/所有内容。关键点只是真正在最重要的表上执行这些良好实践,并且总体策略是关键。
    【解决方案2】:

    您可以查看 table partitioning 以获得非常大的表格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 2019-10-15
      • 2013-07-29
      相关资源
      最近更新 更多