成员列表的最佳数据库构建实践

时间:2011-03-21 16:04:50

标签: database-design filtering

我想为我的关联建立一个成员数据库。我们是一个由较小的本地实体组成的国家组织。

我想知道哪种做法在速度和开销方面更好地组织我的数据库:

  1. 创建一个包含所有成员的大型表,其中包含“本地关联”字段以进行过滤。
  2. 创建多个表,每个组一个。
  3. (顺便说一句,我正在研究joomla,如果这可能会改变一些事情)

    编辑:我会更清楚地了解协会的结构。一名成员当时只能参加一个小型地方协会。所有成员都是国家协会的成员。对于每个成员(以及每个关联),数据字段都是相同的。评论我是否还不清楚:)

4 个答案:

答案 0 :(得分:2)

由于您发布的要求有限,这就是我的看法。这是第三种选择,因为您发布的2个选项确实不适合数据库。

enter image description here

您描述了3个不同的实体(成员,组(Assoc。),地址(位置))和每个规范化规则,您需要将它们分开。如果只保留1或2个表中的所有内容,则整个数据库中都会有重复项。就个人而言,我同意托马斯的意见,并考虑纳入我发布的第二个选项。

我刚刚给出了一个基本的表结构,再次不了解您的全部要求,因此请根据您的要求调整关系基数。我试图强调的答案中最重要的部分是适当规范化。与其他人对简单性的看法相反,你不能再简单地设置一个正确设置的数据库,而数据库又可以正常规范化。

答案 1 :(得分:1)

假设您正在跟踪所有成员的相同字段,无论本地关联如何,我都会倾向于所有成员的一个表。当您添加/删除本地关联时,这将显着降低您的维护开销。

如果不同的本地协会跟踪有关会员的显着不同信息,那么您可能需要稍微重新考虑此建议。

答案 2 :(得分:1)

我会考虑第三种选择:成员表,关联表和将两者联系在一起的表。通过这种方式,同一个人可以成为多个关联的一部分,而无需复制他们的信息。

答案 3 :(得分:0)

我会建议一张大桌子。即使将它拆分在理论上更快,在简单性方面也会失去很多优势。例如,就速度而言,考虑针对一个表调整和优化查询的简单性,而不是10个表。

另外我担心如果你有多个表,你会有很多冗余。因此,无论如何,如果您进行拆分,请尝试最小化冗余并使用关系以避免维护大量几乎相同的表。