只是想知道是否有人能指出我在SQL中存储多个属性及其值的正确方向?
说我有名字,姓氏,公司,推特,脸书等等,可以在将来添加更多属性。
我想到了几种方法,一种是将所有答案存储在一列中,将所有答案存储在另一列中,通过爆破并存储它们,如Firstname ||| Surname ||| Company等... 或者,我对他们没有太多经验但是按位运算符?
如果有人能给我一个想法并且可能是一个很棒的例子,那么只是寻找最好/最有效的解决方案。
干杯, 基督教
答案 0 :(得分:5)
如果您正在寻找的是一种将变量属性附加到给定用户的方法,并且您不希望每次都有新类型的属性修改该表。也许EAV会帮助你。如果你不习惯它,报告就有点复杂了。但它为您提供了非常灵活的结构。详细了解here
微小的例子:
Users
user_id username paswword email
1 "katsuke" "abc" "demo@demo.com"
User_EAV
user_id attribute_name value
1 "First Name" "Katsuke"
1 "Last Name" "Isikashi"
1 "Library Card" "14124214"
1 "Dental Card" "asd123123"
希望有所帮助。祝你好运!
答案 1 :(得分:3)
如果您只想存储和检索它们(不是批量更新,排序或按它们搜索),您可以使用普通表中的基本结构和序列化数组(或json)中的扩展值。 Doctrine支持这个(column: {additionalattrs: {type: object}}
)
实际上,如果你想搜索,json和serialize在纯文本中仍然可以搜索,但不要指望任何索引,并为一些误报做好准备。
答案 2 :(得分:2)
根据您的需要,您可以添加1:N属性表
id: integer
name: string
value: string
您还可以考虑只添加非必填字段作为属性,并在主表中添加必填字段。这将允许您稍后添加更多字段。