每个用户只使用一个表具有不同的“结构”

时间:2012-07-03 07:08:21

标签: mysql

我试图这样做:

每个用户都可以选择字段(如MySQL上的结构),这些字段可以处理各自的值,就像在数据库中执行数据库一样。
但是我怎么能用一张桌子做呢? (不是谈论用户帐户等我应该能够使用指向他自己的“结构”的指针)

执行类似下面的操作:varchar键,其中注册类似于“名称:asd”的PHP爆炸:获取相应的结构(在这种情况下为“名称”)和相应的值? ( 'ASD') 使用BLOB?有人可以为我开灯吗?我不知道如何做比我目前的解释更好的事情......

我知道我的文字对任何糟糕的英语都感到困惑和抱歉。

编辑:
此外,他们可以添加多个键/“结构”,其中接受新值
而且他们无法看到数据库或表格,他们仍然是普通用户 我的服务器不支持Postogre

5 个答案:

答案 0 :(得分:2)

在我看来,你应该创建两个表。

  1. 使用用户信息
  2. 有3个字段(userid,key和value)
  3. 每个用户在第一个表中有1条记录。每个用户在第二个表中可以有0个或更多记录。这将确保您仍然可以搜索数据,并且用户可以在需要时轻松添加更多键/值对。

答案 1 :(得分:1)

不要开始在数据库中构建数据库。在这种情况下,由于用户自己创建字段,我所理解的字段之间没有关系?在这种情况下,看看NoSQL数据库是有意义的,因为它们似乎非常适合这种情况。

要检查的另一件事是: http://www.postgresql.org/docs/8.4/static/hstore.html

不要尝试构建像:记录,字段,字段类型等表。这是一种不好的做法,不应该被要求。

如果您希望得到更具体的答案,我们需要更多关于用户存储数据的信息。

答案 2 :(得分:1)

虽然我认为这个问题的理性答案是PeeHaa给出的,如果你真的希望数据适合一个表,你可以尝试在其中一个字段中保存序列化的PHP数组。查看serializeunserialize

  

生成值的可存储表示

     

这对于存储或传递PHP值而不会丢失非常有用   他们的类型和结构。

不建议使用此方法,因为它根本不可扩展。

答案 3 :(得分:0)

使用具有键值对的表。所以三栏:

  • 用户ID
  • key(“name”)
  • value(“asd”)

用户ID 上添加索引,以便您可以轻松查询用户的属性。如果您想查询具有相同属性的所有用户,则可以在和/或上添加第二个索引。

答案 4 :(得分:0)

希望您也使用编程语言来获取数据并显示它们。

您可以拥有一个包含varchar字段的表。然后将字段结构的序列化数据及其值存储在该字段中。如果要获取结构,请查询数据并反序列化该varchar字段数据。

据我所知,每种编程语言都支持序列化和反序列化。

已编辑:这不是可扩展的选项。