Как хранить несколько наборов значений в базе данных? - PullRequest
2 голосов
/ 18 июля 2010

Прямо сейчас я создаю веб-приложение, которое требует, чтобы в БД хранилось несколько наборов данных (включая URL, заголовок и дату).

Так, например, User1 может хранитьЭлемент 1, который состоит из Example, http://example.com, and YY-MM-DD HH:MM:SS.И у него может быть несколько элементов с одними и теми же типами данных.

Раньше я сортировал все элементы в одном поле таблицы пользователей следующим образом:

Example=>http://example.com=>YY-MM-DD HH:MM:SS[END]
Example2=>http://example2.com=>YY-MM-DD HH:MM:SS[END]
etc...

в сочетании с одной большой строкой, а затем в PHP я разделяю каждую строку разделителем [END], а затем разделяю каждую из этих строк разделителем =>.Теперь мне интересно, будет ли лучше хранить эти элементы в своей таблице, чтобы у каждого пользователя была таблица «Элементы» (user1_items, user2_items и т. Д.).Есть ли «правильный» способ сделать это?Будет ли использование отдельных таблиц излишним?Кроме того, сколько еще места я бы потерял на своем веб-хосте?Просто ищу какое-то руководство о том, как это сделать.

Если понадобятся какие-либо дальнейшие уточнения, пожалуйста, дайте мне знать!

Ответы [ 4 ]

5 голосов
/ 18 июля 2010

Иметь пользовательскую таблицу с информацией о каждом пользователе вместе с уникальным идентификатором пользователя.

Иметь таблицу данных, где каждый фрагмент информации (URL, заголовок, дата) представляет собой отдельный столбец. Добавьте дополнительный столбец с именем user_id, который указывает, к какому пользователю относится данный фрагмент информации.

1 голос
/ 18 июля 2010

Помещение ваших данных в одну длинную строку отрицательно скажется на назначении базы данных.Это было бы эквивалентно записи в текстовый файл.Базы данных - это способ систематизировать, индексировать и связывать данные друг с другом.

Чтобы визуализировать структуру базы данных, представьте таблицу, подобную этой.

   id      name           url                         date
  ----    ------------   -----------------------     --------------------
    1      Example1       www.example1.com            10-07-14 13:56:13
    2      Example2       www.example2.com            10-07-15 00:06:37
    3      Example3       www.example3.com            10-07-16 16:20:00
    4      Example4       www.example4.com            10-07-17 09:18:22

каждая представляет собой строку в базе данныхи вы можете вытащить их несколько на основе запроса, а затем сделать с ними все, что вам нужно.

Также вы можете связать эти данные с пользователем, который ввел эти данные, добавив столбец user_id и вставив их пользователяидентификатор в каждой записи, который будет ссылаться на их запись пользователя в таблице пользователей.

1 голос
/ 18 июля 2010

Я согласен пойти на отдельные таблицы.

Также обратите внимание, что если вы решили вставить несколько значений в столбец, вам не нужно вставлять свои собственные разделители, такие как [END], просто сохраните их в массиве и используйте serialize($array) для сериализации перед сохранением, затем $array = unserialize($dbResponse); при извлечении из базы данных. Это предполагает, что данные очищены и безопасны.

0 голосов
/ 18 июля 2010

Я бы следовал этой форме, потому что она оказалась для меня более быстрой.

С каждым индексом уникального пользователя это создало бы консультацию к таблице статей, связывающей индекс этого уникального пользователя с уникальнымподиндекс, в котором будет таблица с информацией Пример => http: // example.com => ГГ-ММ-ДД ЧЧ: ММ: СС [КНЦ] Example2 => http: // example2.com => ГГ-ММ-ДД ЧЧ: ММ: СС [КНЦ] и т. Д. *

Например:


Индекс пользователя, pe userid = '98'

[User table]

    (Userid (Index))
    (Name)
    .
    .
    .

And


[Articles table]

 Subid(Articleid) 98
 (Url) http: // example.com
 (Datetime) YY-MM-DD HH:MM:SS

--------------------------

 Subid(Articleid) 99
 (Url) http: // example.com
 (Datetime) YY-MM-DD HH:MM:SS

__________________________

Индекс того же пользователя, связанный с тем же субиндексом статей.Вы сохраняли свои консультации в базе данных, потому что с консультацией у вас будет вся информация.

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