【问题标题】:Best way for saving infinit playlists (arrays) into db? (php mySql)将无限播放列表(数组)保存到数据库的最佳方法? (php mySql)
【发布时间】:2010-05-02 20:50:56
【问题描述】:

所以客户给了我一个来自用户12 的字符串,例如"1,23,23,abc,ggg,544,tf4,"。可以有无数个没有空格的元素,只是 value,value,... 结构。我有用户表(带有用户 uId(key)、名称等)。我有带有( sId(key)、externalID 等值)的流表。用户向我发送 externalId。而且我需要在播放列表中保留 externalId(不是我的 sId)。我需要一些方法将这样的数组存储到我的数据库中并能够从数据库中获取它。

我需要能够做两件事

  1. 将此类字符串返回给用户
  2. 能够像{1; 23; 23; abc; ggg; 544; tf4;}一样从中获取na数组

那么什么是最好的方法(这里最好是指缩短(少量)代码)

  1. 将此类数据存储到数据库中
  2. 以显示的两种方式检索存储的 tata

【问题讨论】:

  • 首先你需要一个无限大的硬盘...
  • 学习拼写也可能是个好主意..
  • 我有它...好吧,让我们说播放列表不超过 10^10 个项目=)
  • 您是否需要对各个 ID 执行任何类型的处理?如果不是,那么最简单的解决方案是按字面意思存储接收到的字符串。

标签: php mysql arrays string database


【解决方案1】:

我认为,这样的事情应该可以工作:
User: user_id Value: user_id, value, id
根据来自用户12 的示例1,23,23,abc,ggg,544,tf4,您将拥有:

TABLE User  
user_id  
12

TABLE Value  
user_id | value | id  
12      | 1     | 0  
12      | 23    | 1  
12      | 23    | 2  
12      | ggg   | 4  
12      | abc   | 3  
...

id 将用于每个用户的排序列表,因此如果您想检索它,只需使用此查询:SELECT value FROM VALUE WHERE user_id = 12 ORDER BY id

【讨论】:

    【解决方案2】:

    这是一种经典的一对多关系。一位用户有许多外部 ID

    User:         id, name
    UserExternal: user_id, id # both fields as PK, id as CHAR
    

    要获取连接到用户的每个外部 id,只需执行以下查询:

    SELECT u.id, u.name, ue.id AS external
    FROM user u
    LEFT JOIN user_external ue ON u.id = ue.user_id
    

    【讨论】:

    • 和我的列表存储有关吗?如何?好的,我对经典的一对多关系有所了解,但它如何在我的情况下停止?
    猜你喜欢
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2011-09-07
    • 2012-09-29
    • 2012-03-07
    • 2012-06-19
    • 2011-10-09
    相关资源
    最近更新 更多