Хранение нескольких чисел в одном поле

DrunkPacifist

Новичок
Здравствуйте.

Как лучше всего в одном поле таблицы хранить несколько числовых значений? Например, в таблице с книгами в поле авторов список идентификаторов, указывающих на них, или список id комментариев для одного топика. На ум приходит только вариант вроде
PHP:
serialize($array_of_numbers)
с последующим сохранением результата в базу, но может есть решение получше, в т.ч. и стандартное?
Заранее благодарен!
 

Фанат

oncle terrible
Команда форума
Есть. Именно что стандартное.
То есть, способы "хранить несколько чисел в одной ячейке" есть разные, но вот конкретно для этого случая все они не подходят.

В таблице с книгами поле авторов должно отсутствовать вовсе, а должна быть ещё одна таблица, из двух колонок - ид книги и ид автора. Это называется "связь многие-ко-многим" (один и тот же автор может писать в разные книжки).
В таблице с топиками поле с ид комментариев должно отсутствовать вовсе, а вот в таблице комментариев должно быть поле "ид топика", к которому комментарии относятся. Это называется "связь один-ко-многим". (у топика комментариев может быть много, но вот у комментария топик - только один)
 

DrunkPacifist

Новичок
В таблице с книгами поле авторов должно отсутствовать вовсе, а должна быть ещё одна таблица, из двух колонок - ид книги и ид автора. Это называется "связь многие-ко-многим" (один и тот же автор может писать в разные книжки).
Разумно. Спасибо!
В таблице с топиками поле с ид комментариев должно отсутствовать вовсе, а вот в таблице комментариев должно быть поле "ид топика", к которому комментарии относятся. Это называется "связь один-ко-многим". (у топика комментариев может быть много, но вот у комментария топик - только один)
Тут мне кажется лучше сделать по-моему (список комментариев для одного топика), в т.ч. и потому, что в поле 'комментарии' топика можно указать их определенный порядок. Нет?

Тем не менее, чтобы не создавать тему в будущем - как лучше всего сохранить несколько чисел в одном поле таблицы?
 

Breeze

goshogun
Команда форума
Партнер клуба
Тут мне кажется лучше сделать по-моему...
как лучше всего сохранить несколько чисел в одном поле таблицы?
Оставь это "кажется" в стороне, не надо так делать. Лучше почитай про нормальные формы таблиц.
То, что ты хочешь сделать, называется денормализацией и достаточно специфично. И в твоем случае не необходимо.
 

DrunkPacifist

Новичок
Оставь это "кажется" в стороне, не надо так делать
Вы так уверенно это утверждаете - наверняка вам не составит труда обосновать вашу точку зрения, в том числе и ссылками на "нормальные формы таблиц", что бы это не значило.
И в твоем случае не необходимо
Повторюсь:
Тем не менее, чтобы не создавать тему в будущем - как лучше всего сохранить несколько чисел в одном поле таблицы?
 

baev

‹°°¬•
Команда форума
Повторюсь:
Тем не менее, чтобы не создавать тему в будущем - как лучше всего сохранить несколько чисел в одном поле таблицы?
— повторю: «не надо так делать. Лучше почитай про нормальные формы таблиц».


ссылками на "нормальные формы таблиц", что бы это не значило
http://yaforyou.ru/?q=нормальные формы таблиц
 

Фанат

oncle terrible
Команда форума
Тут мне кажется лучше сделать по-моему (список комментариев для одного топика), в т.ч. и потому, что в поле 'комментарии' топика можно указать их определенный порядок. Нет?
Не вижу смысла.
Единственный порядок, который приходит в голову для комментариев - это время их добавления.
Писать комментарии в каком-либо другом порядке - это гарантированно сбивать с толку читателя.

Честно говоря, я не очень понимаю все эти высосанные из пальца истории.
Можно узнать, какая конкретно задача решается в данный момент?

Тем не менее, чтобы не создавать тему в будущем - как лучше всего сохранить несколько чисел в одном поле таблицы?
Способов, как я уже говорил - много.
Есть и весьма экзотические.
Для каждой конкретной задачи служит свой собственный.
Все перечислять и времени не хватит, и в голове у тебя каша останется. Если так уж хочется теории - поступай в институт на информатику.
Традиционный для баз данных я уже выше изложил.
Если будет какая-то конкретная задача - мы с радостью поможем её решить, отталкиваясь не от метода, который почему-то обязательно надо применить при её решении, а от желаемого результата.
 

sobachnik

Новичок
Тут мне кажется лучше сделать по-моему (список комментариев для одного топика), в т.ч. и потому, что в поле 'комментарии' топика можно указать их определенный порядок. Нет?
Допустим, таблица комментариев имеет такой вид:
PHP:
+---------+----------+------------+------------+-----------+
|      id | topic_id |       text | add_date   | order_num |
+---------+----------+------------+------------+-----------+
|       1 |        1 |  comment 1 | 2011-01-01 |         1 |
|       2 |        1 |  comment 2 | 2011-02-01 |         2 |
|       3 |        2 |  comment 3 | 2011-02-03 |         1 |
|       4 |        1 |  comment 4 | 2011-03-02 |         3 |
|       5 |        3 |  comment 5 | 2011-03-11 |         1 |
|       6 |        3 |  comment 6 | 2011-03-15 |         2 |
|       7 |        1 |  comment 7 | 2011-03-21 |         4 |
|       8 |        2 |  comment 8 | 2011-04-01 |         2 |
+---------+----------+------------+------------+-----------+
Хочешь - сортируешь по add_date (можешь по возрастанию, можешь - по убыванию)
Хочешь - сортируешь по order_num (при желании можешь хоть руками нужный порядок проставлять, я для этого пишу в админке скрипт, с помощью которого можно передвигать элементы вверх-вниз и т.п.)
 
Сверху