【发布时间】:2014-02-17 10:10:14
【问题描述】:
我有一个在逻辑嵌套结构中存储大量数据的模型。数据的结构是一个嵌套数组,如下:
A>B>C
A 中大约有 50k 个项目,每个 A 有 200 个 B,每个 B 有 50 个 C。因此有 1000 万个 B,5 亿个 C。但是,每个 C 都很小,通常是 2-10 个字符文本。
看来我有三个选择:
1.Have one table for A, and store B and C as text in a column in table A
2. Have two tables, one for A and one for B that is associated with A,
3. Have three tables, one for each of the levels in my hierarchy.
我是数据库设计的新手,所以我不确定哪个是最好的。我担心一个 5 亿行的表即使正确索引也会使访问该表中的任何条目变慢。因此,例如如果每个 C 在 b_id 上都有一个索引,那么搜索具有特定 b_id 的所有 C 将非常慢。
【问题讨论】:
-
A、B、C三者关系的本质是什么?一对多?
-
是一对多,所以 A 有很多 B,B 有很多 C
-
我对反过来更感兴趣:每个 C 只有一个 B?每个 B 只有一个 A?
-
每个 B 可以属于多个 A 吗?
-
抱歉,不清楚。是的,每个C只有一个B,每个B只有一个A
标签: sql performance postgresql activerecord