这是我的数据布局:
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 |
每个字段代表一个子标题。在我的表中有这么多列看起来非常低效......
如何优化此功能?我想不出任何方法来消除它:/
答案 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
您可以为字段名称为
的字段创建另一个主表