Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно организовать БД с инфой о юзерах? 
:(
    Опции темы
ikillbill
Дата 19.8.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 35
Регистрация: 21.11.2006

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



Есть следующая таблица с людьми. 
Код

id, name, surname, male, birth


К каждому человеку в профиль нужно подцепить кучу чекбоксов
Код

Курю, пью, занимаюсь спортом, есть права, в браке, есть дети и т.п.


Как все эти чекбоксы записать в базу? 
Вариант с добавочными полями к основной таблице отпадает, полей будет много.
PM MAIL   Вверх
bars80080
Дата 19.8.2008, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



какая разница сколько полей? данные есть данные. если поля предусматривают однозначный вариант ответа и их будет фиксированное количества, то хоть сто штук, но они должны быть в этой же таблице
PM MAIL WWW   Вверх
ikillbill
Дата 19.8.2008, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 35
Регистрация: 21.11.2006

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



Цитата(bars80080 @  19.8.2008,  15:07 Найти цитируемый пост)
какая разница сколько полей? данные есть данные. если поля предусматривают однозначный вариант ответа и их будет фиксированное количества, то хоть сто штук, но они должны быть в этой же таблице 


Я тоже хочу чтобы все это лежало в одной таблице. 

А можно это как-нибудь все засунуть в одно поле? Например записывая данные в виде 0100010011110000 или суммой (1+2+4+8+16), но нужен какой-нибудь вариант не препятствующим делать выборки, например "показать всех курящих"
PM MAIL   Вверх
americanets
Дата 19.8.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 12



делай вторую таблицу

    
id - где id это ид  юзера
answer - ответ

потом объединяй запрос 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
ikillbill
Дата 19.8.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 35
Регистрация: 21.11.2006

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



Цитата(americanets @  19.8.2008,  15:16 Найти цитируемый пост)
делай вторую таблицу

    
id - где id это ид  юзера
answer - ответ

потом объединяй запрос  


Все-таки хочется обойтись всего одним полем в основной таблице. 
Я знаю что это можно реализовать, но как? С утра ничего в голову не приходит.
PM MAIL   Вверх
bars80080
Дата 19.8.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



americanets, если на поле один вариант ответа, то можно и одной таблицей обойтись, зачем множить?


Цитата(ikillbill @  19.8.2008,  15:12 Найти цитируемый пост)
А можно это как-нибудь все засунуть в одно поле? Например записывая данные в виде 0100010011110000 
можно, то это будет препятствовать выборке



Цитата(ikillbill @  19.8.2008,  15:12 Найти цитируемый пост)
или суммой (1+2+4+8+16)

тоже можно, но для этого придётся написать специальную функцию-обработчик, через которую каждый раз придётся пропускать данные поля. тоже излишне, когда можно всё вытащить одним запросом
PM MAIL WWW   Вверх
ikillbill
Дата 19.8.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 35
Регистрация: 21.11.2006

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



А если все-таки данные хранить как 010011 и выборки делать так
Код

select * from users where add like '_1_0__' 

для показа пьющих, без прав

Как это на базе скажется?
PM MAIL   Вверх
bars80080
Дата 19.8.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



как бесмысленное торможение. к тому, здесь простенькая выборка, а вдруг потребуется сделать мощную статистику с объединением ещё чего-нибудь? тогда вообще зашьётся

а чем не устраивает большое количество полей?
PM MAIL WWW   Вверх
ikillbill
Дата 19.8.2008, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 35
Регистрация: 21.11.2006

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



Цитата(bars80080 @  19.8.2008,  15:42 Найти цитируемый пост)
а чем не устраивает большое количество полей? 

Их будет около 40 штук %)

Мне почему-то кажется, что это как минимум не практично
PM MAIL   Вверх
americanets
Дата 19.8.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 12



bars80080, не находишь странным выбор одного из них? 

те, если в браке значит не пью и не курю, или наоборот. Есть дети -> значит занимаюсь спортом и сексом. Так ? smile

Цитата(ikillbill @  19.8.2008,  16:04 Найти цитируемый пост)
К каждому человеку в профиль нужно подцепить кучу чекбоксов
Выделить всёкод PHP
1:
    
Курю, пью, занимаюсь спортом, есть права, в браке, есть дети и т.п.


Добавлено через 1 минуту и 14 секунд
а еще есть такая штука "нормализация" вот это какраз она


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
bars80080
Дата 19.8.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



Цитата(americanets @  19.8.2008,  15:46 Найти цитируемый пост)
те, если в браке значит не пью и не курю, или наоборот. Есть дети -> значит занимаюсь спортом и сексом. Так ?
это про что?

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


Цитата(ikillbill @  19.8.2008,  15:45 Найти цитируемый пост)
Мне почему-то кажется, что это как минимум не практично 

почему? откуда такие данные?
PM MAIL WWW   Вверх
ikillbill
Дата 19.8.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 35
Регистрация: 21.11.2006

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



Цитата(bars80080 @  19.8.2008,  15:51 Найти цитируемый пост)
почему? откуда такие данные? 

База получится черезчур "широкой". 

Ну, если не найду способа запихнуть все в одно поле придется расширять ее.

Насчет способа с like '_1_0__' - если от базы ничего более крупного не потребуется, то можно ли им пользоваться, или подобные "побуквенные" запросы медленно выполняются? Если да, то на сколько медленно?
PM MAIL   Вверх
americanets
Дата 19.8.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 12



Цитата(ikillbill @  19.8.2008,  17:00 Найти цитируемый пост)
Насчет способа с like '_1_0__' - если от базы ничего более крупного не потребуется, то можно ли им пользоваться, или подобные "побуквенные" запросы медленно выполняются? Если да, то на сколько медленно? 


если честно то такое хранение полная ерунда, если уж очень хочется пихать много ответов в одно полу смотри сериализацию 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
ikillbill
Дата 19.8.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 35
Регистрация: 21.11.2006

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



Цитата(americanets @  19.8.2008,  16:04 Найти цитируемый пост)
смотри сериализацию  

Ты имеешь в виду XML?

Это сообщение отредактировал(а) ikillbill - 19.8.2008, 16:13
PM MAIL   Вверх
americanets
Дата 19.8.2008, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 12





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


 




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


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

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