我目前正在开发一个支持"自定义字段"对于用户。
我将用这个数据库模式的简化示例来说明这一点:
users
--------
user_id
name
age
custom_fields
----------------
custom_field_id
custom_field_name
user_has_custom_field_value
------------------------
user_id (FK to users table)
custom_field_id (FK to custom_fields table)
custom_field_value (column that contains value of custom field)
此架构支持创建自定义字段,以根据客户的意愿存储信息。
但是,我想在查询输出中列出所有用户及其自定义字段(或使用一些PHP逻辑)
| user_id | name | age | fav_sport | payment_mode | bank
----------------------------------------------------------------------------------
3 John 28 Football SWIFT Chase
6 Jane 24 Swimming Cash BOA
fav_sport,payment_mode和bank是自定义字段,在custom_fields表格中表示为3行。
因此,custom_fields表如下所示:
custom_field_id | custom_field_name
-----------------------------------------------
1 fav_sport
2 payment_mode
3 bank
,user_has_custom_field值如下所示:
user_id | custom_field_id | custom_field_value
----------------------------------------------------------------------
1 1 Football
1 2 SWIFT
1 3 Chase
2 1 Swimming
2 2 Cash
2 3 BOA
使用最少的查询并且不对数据库征税会以最佳方式实现此目的是什么?
我能想到的唯一解决方案是在PHP中的for循环中使用查询来获取自定义字段(肯定会很重)。有什么更有效的解决方案呢?
建议欢迎基于MySQL,基于PHP,存储过程等。