我有一个数据库,其中有关用户的数据存储在这样的表中
|_firstname_|_lastname_|_age_|...
| John | Johnson | 21 |...
...
即使用普通的关系数据库模型。
如果我改用EAV模型存储上述数据,则列(在EAV中称为属性)本身将存储在表中,并且具有唯一的列(属性)ID:s。这样做的好处是,我可以在另一个表中使用这些ID:将数据连接到自身列,例如该列是隐藏的还是在用户界面中显示的(下面还使用了EAV)型号):
|____column_id____|___attribute___|___value___|
| <firstname_id> | hidden | false |
| <lastname_id> | hidden | false |
| <age_id> | hidden | true |
...
但是,我想坚持使用用户数据表(首先显示的表)的关系数据库模型,因为否则查询会变得很慢,但是我仍然希望将值连接到列我要使用EAV模型。
有没有一种可以严格存储用户数据表中各列数据的表?
答案 0 :(得分:0)
最简单的EAV实现可能只有三个表:实体,属性和值。此设置的示例如下所示:
,因此您的表可能如下所示:
|attribute_id| name | is visible |
|10 | firstname | 1 |
|11 | lastname | 1 |
|12 | age | 0 |
|entity_id | entity_name |...
|1 | person1 |
|2 | person2 |
|row_id |attribute_id| entity_id | entity_id |
|155 |10 | 1 | John |
|156 |11 | 1 | Doe |
|199 |12 | 1 | 28 |
|.... .... .... ....
|255 |10 | 2 | Ali |
|256 |11 | 2 | Smith |
|279 |12 | 2 | 25 |