| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Несколько значений в одно поле |
| Автор: elCreator 3.7.2008, 04:27 |
| Как реализуется хранение однотипной информации, соответствующей одному и тому же полю? Например, в таблице user храним информацию о пользователях. У каждого может быть несколько телефонов - например, максимум 4. В этом случае еще можно создать поля tel1,tel2,tel3,tel4 и соответственно, заполнять их. А если хранить нужно, например, не телефоны, а id друзей пользователя на сайте, которых может быть сотня? Не создавать же сто полей вышеописанным методом. |
| Автор: bars80080 3.7.2008, 08:58 |
| наиболее оптимальная система в этом случае - введение дополнительной таблицы (с точки зрения выборки по этим данным и с точки зрения организации) то есть делаем таблицу telefons: (id, id_user, number) и сколько их бы там ни было заполняем. тоже самое с друзьями: (id, id_user, id_frend) |
| Автор: Feldmarschall 3.7.2008, 09:01 |
| совершенно верно, не создавать сто полей. а создавать таблицу, с двумя полями. Возможно, ты слышал, что используемая тобой база данных называется "реляционной". так вот реляционная - это оно и есть. когда хранить можно не в одной таблице, а в нескольких, устанавливая между ними связи, relations Добавлено через 2 минуты и 27 секунд elCreator, а вот пытаться зарабатывать на людях, у которых ты просишь помощи - нехорошо... убрал бы ты подпись |
| Автор: elCreator 4.7.2008, 05:44 |
| Всем спасибо за ответы. Т.е., таблица будет иметь вид 1|Vasya|333222 2|Vasya|234243 3|Vasya|653545 4|Petya|253434 5|Petya|452435 и дальше SELECT * FROM `users` WHERE nick=`Vasya`; будет выдавать нам все телефоны пользователя Vasya. |
| Автор: bars80080 4.7.2008, 09:03 |
| да, но простая рекомендация - лучше, чтобы ещё имелась таблица пользователей, где в каждой строчке будут указаны все данные на пользователя (id, name, surname, height, foto ... и т.п.), а в таблице телефонов не имя пользователя, а id из таблицы пользователей. выгода очевидна, на тот случай если ты ошибся в имени или вдруг оно поменялось или если есть полный однофамилец, то поменять достаточно будет в одном месте. (особенно это важно становится когда возникают проблемы с кодировками) |
| Автор: Feldmarschall 4.7.2008, 11:50 |
| id, кстати, в таких таблицах обычно не нужен. |
| Автор: elCreator 5.7.2008, 21:30 |
| А ID первого зарегистрировавшегося точно будет 1? Просто помню как в поле id, которое стояло как AUTO_INCREMENT, первая запись почему-то оказалось под номером 40. |
| Автор: Feldmarschall 5.7.2008, 21:56 |
| а какая разница, какое там число? хоть 4000. это никак не должно тебя волновать |
| Автор: elCreator 6.7.2008, 21:00 |
| Просто теперь все уже знают о "контакте", и id=1 у большинства пользователей на любом сайте будет прочно ассоциироваться с автором/саппортом и т.п. Я вводил дополнительное неключевое поле с ID, которое явно начиналось с 1 и было с автоинкрементом - работало нормально. Хотя можно в принципе при каждом обращении отнимать константу от этого "хоть 40 хоть 4000" - не пробовал, т.к. таблицы небольшие были, поэтому все равно. |
| Автор: Feldmarschall 7.7.2008, 08:51 |
| Что за глупость? какой ещё "контакт" и id=1? Какой ещё автор? Какое дело глупому юзеру до каких-то там циферок? словами написать, что это суппорт - нельзя? или мы пишем свой контакт или боимся, что кто-то не догадается, что мы - автор, и круче всех? |