![]() |
|
Модераторы: skyboy |
![]()
|
|
| elCreator |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.7.2007 Репутация: нет Всего: -1 |
Как реализуется хранение однотипной информации, соответствующей одному и тому же полю?
Например, в таблице user храним информацию о пользователях. У каждого может быть несколько телефонов - например, максимум 4. В этом случае еще можно создать поля tel1,tel2,tel3,tel4 и соответственно, заполнять их. А если хранить нужно, например, не телефоны, а id друзей пользователя на сайте, которых может быть сотня? Не создавать же сто полей вышеописанным методом. Это сообщение отредактировал(а) elCreator - 4.7.2008, 05:38 |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 5 Всего: 315 |
наиболее оптимальная система в этом случае - введение дополнительной таблицы (с точки зрения выборки по этим данным и с точки зрения организации)
то есть делаем таблицу telefons: (id, id_user, number) и сколько их бы там ни было заполняем. тоже самое с друзьями: (id, id_user, id_frend) |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 3 Всего: 32 |
совершенно верно, не создавать сто полей.
а создавать таблицу, с двумя полями. Возможно, ты слышал, что используемая тобой база данных называется "реляционной". так вот реляционная - это оно и есть. когда хранить можно не в одной таблице, а в нескольких, устанавливая между ними связи, relations Добавлено через 2 минуты и 27 секунд elCreator, а вот пытаться зарабатывать на людях, у которых ты просишь помощи - нехорошо... убрал бы ты подпись Это сообщение отредактировал(а) Feldmarschall - 3.7.2008, 09:03 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Курим маны по реализации связи типа "многие-ко-многим" в реляционных БД. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| elCreator |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 5 Всего: 315 |
да, но простая рекомендация - лучше, чтобы ещё имелась таблица пользователей, где в каждой строчке будут указаны все данные на пользователя (id, name, surname, height, foto ... и т.п.), а в таблице телефонов не имя пользователя, а id из таблицы пользователей.
выгода очевидна, на тот случай если ты ошибся в имени или вдруг оно поменялось или если есть полный однофамилец, то поменять достаточно будет в одном месте. (особенно это важно становится когда возникают проблемы с кодировками) |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 3 Всего: 32 |
id, кстати, в таких таблицах обычно не нужен.
|
|||
|
||||
| elCreator |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.7.2007 Репутация: нет Всего: -1 |
А ID первого зарегистрировавшегося точно будет 1?
Просто помню как в поле id, которое стояло как AUTO_INCREMENT, первая запись почему-то оказалось под номером 40. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 3 Всего: 32 |
а какая разница, какое там число? хоть 4000.
это никак не должно тебя волновать |
|||
|
||||
| elCreator |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.7.2007 Репутация: нет Всего: -1 |
Просто теперь все уже знают о "контакте", и id=1 у большинства пользователей на любом сайте будет прочно ассоциироваться с автором/саппортом и т.п.
Я вводил дополнительное неключевое поле с ID, которое явно начиналось с 1 и было с автоинкрементом - работало нормально. Хотя можно в принципе при каждом обращении отнимать константу от этого "хоть 40 хоть 4000" - не пробовал, т.к. таблицы небольшие были, поэтому все равно. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 3 Всего: 32 |
Что за глупость? какой ещё "контакт" и id=1? Какой ещё автор? Какое дело глупому юзеру до каких-то там циферок?
словами написать, что это суппорт - нельзя? или мы пишем свой контакт или боимся, что кто-то не догадается, что мы - автор, и круче всех? |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |