2011-06-05 108 views
3

只是想知道是否有人可以指向我在SQL中存储多个属性及其值的正确方向?假设我有喜欢名字,姓氏,公司,推特,脸书等等等,有更多的属性可以在未来添加。PHP - 存储多个属性最有效的方式

有几个方法已经超越了我的想法,一个是将所有答案存储在一列中,所有答案都是通过imploding并将它们存储为像Firstname ||| Surname ||| Company等... 或者,我对他们没有太多经验,但是按位运营商呢?

只要寻找最好/最有效的解决方案,如果有人能给我一个想法,或许一个很棒的例子。

干杯, 基督教

+0

让我抓住它吧:你有一张有一些列的表格,你需要稍后添加/删除它们中的一些而不改变表格的结构? – 2011-06-05 22:01:14

+0

NoSQL是否是一个选项,或者您是否锁定使用关系数据库? – 2011-06-06 12:28:14

+0

确实锁定在关系中。我没有使用NoSQL的经验,所以我认为花费很长时间才能让自己陷入困境。 – 2011-06-06 19:35:22

回答

5

如果您正在寻找的是一种将可变属性附加到给定用户的方法,并且您不希望每次都修改表,则会出现新类型的属性。也许EAV会帮助你。如果你不习惯它,报告有点复杂。但它给你一个非常灵活的结​​构。了解更多关于它here

微小例如:

Users 
    user_id username paswword email 
    1  "katsuke" "abc" "[email protected]" 

    User_EAV 
    user_id attribute_name value 
    1  "First Name" "Katsuke" 
    1  "Last Name" "Isikashi" 
    1  "Library Card" "14124214" 
    1  "Dental Card" "asd123123" 

希望有所帮助。祝你好运!

+0

啊,是的,我认为在进一步研究之后,这将是存储数据的最佳方式。感谢您的输入,非常感谢! :) – 2011-06-05 23:46:06

3

根据您的需求,您可以添加一个1:N属性表

id:  integer 
name: string 
value: string 

你也可以考虑只添加非必填字段作为属性和添加所需的字段中输入您主表。这将允许您稍后添加更多字段。

3

如果您只想存储和检索它们(即不是批量更新,按照它们进行排序或搜索),可以使用普通表中的基本结构和序列化数组(或json)中的扩展值。实际上,如果你想搜索,json和serialize仍然可以用纯文本搜索,但不要指望任何索引,并且准备好一些误报。

相关问题