Лучший способ сохранить бесконечные списки воспроизведения (массивы) в БД? (php mySql) - PullRequest
0 голосов
/ 03 мая 2010

Таким образом, клиент дает мне строку типа "1,23,23,abc,ggg,544,tf4," от пользователя 12. Может быть бесконечное количество элементов без пробелов, только значение, значение, ... структура. У меня есть таблица пользователей (с идентификаторами пользователей (ключ), имена и т. Д.). У меня есть таблица потоков с (значения sId (key), externalID и т. Д.). Пользователь отправляет мне externalId. И мне нужно иметь внешние идентификаторы в списке воспроизведения (не мои идентификаторы). Мне нужен какой-то способ хранить такой массив в моей БД и иметь возможность получить его из БД.

Мне нужно уметь делать 2 вещи

  1. вернуть такую ​​строку пользователю
  2. иметь возможность получить массив из него как {1; 23; 23; abc; ggg; 544; tf4;}

Итак, что же является лучшим методом (лучше здесь означает код shourt (небольшое количество))

  1. для хранения таких данных в БД
  2. для извлечения сохраненных данных указанными способами

Ответы [ 2 ]

1 голос
/ 05 мая 2010

Я думаю, что-то вроде этого должно работать:
User: user_id Value: user_id, value, id
И согласно вашему примеру 1,23,23,abc,ggg,544,tf4 от пользователя 12 у вас будет:

* +1007 *

и

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

1 голос
/ 03 мая 2010

Это классические отношения один ко многим. У одного пользователя много внешних идентификаторов :

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

Чтобы получить каждый внешний идентификатор, связанный с пользователем, просто выполните следующий запрос:

* +1007 *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...