Php MySQL模式EAV一列用于不同的值或多列
我在Laravel6框架上运行一个MySQL 8和PHP7.2项目 我的EAV情况如下: 页面表格:Php MySQL模式EAV一列用于不同的值或多列,php,mysql,laravel,entity-attribute-value,Php,Mysql,Laravel,Entity Attribute Value,我在Laravel6框架上运行一个MySQL 8和PHP7.2项目 我的EAV情况如下: 页面表格: id | project_id | page 1 | 1 | about-us 2 | 1 | home 3 | 2 | home id | page_id | attribute | type 1 | 1 | speed | float 2 | 1 | title | text id |
id | project_id | page
1 | 1 | about-us
2 | 1 | home
3 | 2 | home
id | page_id | attribute | type
1 | 1 | speed | float
2 | 1 | title | text
id | page_attribute_id | value
1 | 1 | 5.22
2 | 2 | page title is this
页面属性表格:
id | project_id | page
1 | 1 | about-us
2 | 1 | home
3 | 2 | home
id | page_id | attribute | type
1 | 1 | speed | float
2 | 1 | title | text
id | page_attribute_id | value
1 | 1 | 5.22
2 | 2 | page title is this
属性值表格:
id | project_id | page
1 | 1 | about-us
2 | 1 | home
3 | 2 | home
id | page_id | attribute | type
1 | 1 | speed | float
2 | 1 | title | text
id | page_attribute_id | value
1 | 1 | 5.22
2 | 2 | page title is this
现在我的问题是,在属性值表中,最好像我一样只为浮点和文本类型设置一列,或者设置两个单独的列,一个为值文本,另一个为值浮点
如果我有更多的类型,比如int,boolean,。。。那么呢?哪条路比较好
更新:
@草莓提到了一种我没有考虑过的方法,即对于每种数据类型最好有多个表
现在是这样的:
- 所有数据类型都有一列
- 每个数据类型有多个列
- 每个数据类型有多个表
注意:我正在处理大约5000万条记录后两个表中的id列是否意味着不唯一?@AlexHarris它们是唯一的?这只是一个输入错误。如果使用EAV,我喜欢为不同的数据类型创建单独的表。速度更快吗?你以前试过这个吗?很抱歉问这个问题,我必须确定@strawberry我想你可以自己测试一下,但是如果可能的话,保存数据类型似乎是个好主意。