Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Несколько значений в одно поле 
:(
    Опции темы
elCreator
Дата 3.7.2008, 04:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 21.7.2007

Репутация: нет
Всего: -1



Как реализуется хранение однотипной информации, соответствующей одному и тому же полю? 
Например, в таблице user храним информацию о пользователях. 
У каждого может быть несколько телефонов - например, максимум 4. В этом случае еще можно создать поля tel1,tel2,tel3,tel4 и соответственно, заполнять их. 
А если хранить нужно, например, не телефоны, а id друзей пользователя на сайте, которых может быть сотня? Не создавать же сто полей вышеописанным методом.

Это сообщение отредактировал(а) elCreator - 4.7.2008, 05:38
PM WWW ICQ   Вверх
bars80080
Дата 3.7.2008, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



наиболее оптимальная система в этом случае - введение дополнительной таблицы (с точки зрения выборки по этим данным и с точки зрения организации)
то есть делаем таблицу telefons: (id, id_user, number)
и сколько их бы там ни было заполняем. тоже самое с друзьями: (id, id_user, id_frend)
PM MAIL WWW   Вверх
Feldmarschall
Дата 3.7.2008, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



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

Добавлено через 2 минуты и 27 секунд
elCreator, а вот пытаться зарабатывать на людях, у которых ты просишь помощи - нехорошо...
убрал бы ты подпись

Это сообщение отредактировал(а) Feldmarschall - 3.7.2008, 09:03
PM   Вверх
Akina
Дата 3.7.2008, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(elCreator @  3.7.2008,  05:27 Найти цитируемый пост)
Как реализуется хранение однотипной информации, соответствующей одному и тому же полю? 

Курим маны по реализации связи типа "многие-ко-многим" в реляционных БД.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
elCreator
Дата 4.7.2008, 05:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 21.7.2007

Репутация: нет
Всего: -1



Всем спасибо за ответы. Т.е., таблица будет иметь вид

1|Vasya|333222
2|Vasya|234243
3|Vasya|653545
4|Petya|253434
5|Petya|452435

и дальше SELECT * FROM `users` WHERE nick=`Vasya`; будет выдавать нам все телефоны пользователя Vasya. 
PM WWW ICQ   Вверх
bars80080
Дата 4.7.2008, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



да, но простая рекомендация - лучше, чтобы ещё имелась таблица пользователей, где в каждой строчке будут указаны все данные на пользователя (id, name, surname, height, foto ... и т.п.), а в таблице телефонов не имя пользователя, а id из таблицы пользователей.
выгода очевидна, на тот случай если ты ошибся в имени или вдруг оно поменялось или если есть полный однофамилец, то поменять достаточно будет в одном месте. (особенно это важно становится когда возникают проблемы с кодировками)
PM MAIL WWW   Вверх
Feldmarschall
Дата 4.7.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



id, кстати, в таких таблицах обычно не нужен.
PM   Вверх
elCreator
Дата 5.7.2008, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 21.7.2007

Репутация: нет
Всего: -1



А ID первого зарегистрировавшегося точно будет 1?
Просто помню как в поле id, которое стояло как AUTO_INCREMENT, первая запись почему-то оказалось под номером 40.
PM WWW ICQ   Вверх
Feldmarschall
Дата 5.7.2008, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



а какая разница, какое там число? хоть 4000.
это никак не должно тебя волновать
PM   Вверх
elCreator
Дата 6.7.2008, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 21.7.2007

Репутация: нет
Всего: -1



Просто теперь все уже знают о "контакте", и id=1 у большинства пользователей на любом сайте будет прочно ассоциироваться с автором/саппортом и т.п.
Я вводил дополнительное неключевое поле с ID, которое явно начиналось с 1 и было с автоинкрементом - работало нормально. Хотя можно в принципе при каждом обращении отнимать константу от этого "хоть 40 хоть 4000" - не пробовал, т.к. таблицы небольшие были, поэтому все равно. 
PM WWW ICQ   Вверх
Feldmarschall
Дата 7.7.2008, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



Что за глупость? какой ещё "контакт" и id=1? Какой ещё автор? Какое дело глупому юзеру до каких-то там циферок? 
словами написать, что это суппорт - нельзя?
или мы пишем свой контакт или боимся, что кто-то не догадается, что мы - автор, и круче всех?

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.2695 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.