我需要一些帮助优化我的数据库架构

时间:2010-06-03 06:19:21

标签: mysql sql optimization database-design

这是我的数据布局:

Heading 1:
   Sub heading
   Sub heading
   Sub heading
   Sub heading
   Sub heading

Heading 2:
   Sub heading
   Sub heading
   Sub heading
   Sub heading
   Sub heading

Heading 3:
   Sub heading
   Sub heading
   Sub heading
   Sub heading
   Sub heading

Heading 4:
   Sub heading
   Sub heading
   Sub heading
   Sub heading
   Sub heading

Heading 5:
   Sub heading
   Sub heading
   Sub heading
   Sub heading
   Sub heading

这些标题需要具有“完成状态”布尔值,该值将链接到用户ID。

目前,这就是我的表格:

id  |  userID  |  field_1  |  field_2  |  field_3  |  field_4  | etc...
-----------------------------------------------------------------------
1   |     1    |    0      |     0     |     1     |     0     |
-----------------------------------------------------------------------
2   |     2    |    1      |     0     |     1     |     1     |

每个字段代表一个子标题。在我的表中有这么多列看起来非常低效......

如何优化此功能?我想不出任何方法来消除它:/

3 个答案:

答案 0 :(得分:3)

不要使用布尔值,而是使用简单的关系:

table completion_status

id user_id field_id

1  1       3
2  2       1
3  2       3
4  2       4
...

由此可以很容易地看出用户1已完成字段3,用户2已完成1,3和4。

这样,无论何时想要更改字段数量,都不必更改数据库架构。

答案 1 :(得分:0)

您可以将子标题放在不同的表中,然后将该表链接到第一个表。

id  |  userID  |  field_id | 
-----------------------------
1   |     1    |    0      | 
-----------------------------
2   |     2    |    1      | 

field看起来像这样

id  | field_1 | field_2   | etc..
-----------------------------
1   |     1   |    0      | etc..

答案 2 :(得分:0)

为什么不制作这样的桌子?

id  | User Id | Field ID | Status
---------------------------------
1   |   1     |   1      | 0   
2   |   1     |   2      | 1  

您可以为字段名称为

的字段创建另一个主表