1

我应该如何在 MySql 中建模这些数据?

我的数据如下所示:

有许多项目,其中一些共享一个项目组。每个项目都有一个 0-10 或 20 个事件的列表。每个项目都可以处于 INPROGRESS 状态或 COMPLETED 状态。

我想通过两种方式查询这些数据:

  1. ITEMGROUP 中的所有项目。按需查询。
  2. 一个带有唯一标识符的项目,以及与之关联的所有事件。按需查询。
  3. 所有项目正在进行中。至少每小时一次。

每月输入 2,000,000 个项目。因此,一年后数据库将拥有 24,000,000 个项目。

为这些数据和这些查询模式建模我的数据和索引的最佳方法是什么?如果有的话,我应该注意这些数据和这些查询的哪些问题?

4

1 回答 1

1

我不确定我是否理解你。但它是关系数据库的简单模式。像这样的东西?

Table: Item (Id, ...)
Table: ItemGroup (Id, FK_Item, ...)
Table: ItemEvent (Id, FK_Item, ...)

SELECT Item.* 
FROM Item JOIN ItemGroup ON Item.Id = ItemGroup.FK_Item 
WHERE ItemGroup.Id = ? ...

SELECT ItemEvent.* 
FROM Item JOIN ItemEvent ON Item.Id = ItemEvent.FK_Item 
WHERE Item.Id = ? ...

SELECT Item.* 
FROM Item JOIN ItemEvent ON Item.Id = ItemEvent.FK_Item 
WHERE ItemEvent.state = 'INPROGRESS' ...

主键Id和所有外键的索引 ( FK_...)。在这种情况下,外键索引ItemEvent.FK_Item也应该包括该列ItemEvent.state

于 2012-09-09T09:12:06.340 回答