| imho.ws |
![]() |
|
|
|
# 1 |
|
::VIP::
IMHO Молодожен-2006 Регистрация: 14.06.2002
Адрес: Moscow
Сообщения: 2 921
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
строки с разными параметрами в MYSQL
Необходимо сделать небольшую админку, которая управляла бы формами ввода. Например есть 3 каких-то категории, у них есть формы ввода, но с разными полями. (т.е. в одном это поле color, name, id к примеру, а в другой direction, type, id).
вопрос заключается в следущем: как мне организовать запись таких данных в mysql в одну таблицу? т.е. у строк, в зависимости от категории будут разные имена столбцов. Имеет ли смысл делать столбцы для всех и забивать их NULL, если нет значения или лучше создать другую таблицу? таких категорий(таблиц) планируется много. Т.е. и полей тоже немало (около 100 в общей сложности - т.е. по 3-5 полей от каждой категории.) Надеюсь я понятно изложил проблему . Готов объяснить еще подробней. Спасибо. |
|
|
|
|
# 2 |
|
Moderator
Регистрация: 29.04.2002
Адрес: Moscow
Пол: Male
Сообщения: 2 980
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Т.е., если я правильно понял, тебе надо запрос собирать из разных частей, как из конструктора? Можно имя столбца передавать в качестве параметра, а потом подстыковывать к основной части запроса
__________________
Есть две бесконечные вещи, Вселенная и глупость. Впрочем, на счет Вселенной, я не уверен |
|
|
|
|
# 3 |
|
KpTeaM
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
hempsmoke
Создаешь столбец, где прописываешь тип категории + столбцы с данными, типа data1, data2, data3 и в зависимости от типа категории трактуешь данные по разному. Можно данные вынести в отдельные таблицы. По-моему так логично и понятно.
__________________
Над струнами вен моих Лезвия осени, Их сталь леденящая В просинь рук просится... ©Темнозорь |
|
|
|
|
# 4 | |
|
::VIP::
IMHO Молодожен-2006 Регистрация: 14.06.2002
Адрес: Moscow
Сообщения: 2 921
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Merlin Cori
фактически да. часть формы у всех категорий однакова (name,email), а остальные разные. Цитата:
Madness ммм.. немного не догнал - создаешь столбец, а в нем еще столбец? или ты имеешь ввиду способ, как форумы хранят ответы и результаты для голосований? тогда как же мне сортировать такие данные? |
|
|
|
|
|
# 6 |
|
KpTeaM
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Merlin Cori
Так много пустых ячеек получится. Обычно так и делают. hempsmoke К таблице добавляешь столбец с типом данных + столбцы с самими данными(в количестве самого большого необходимого числа). В типе ты помечаешь что у тебя в данных хранится и в соответствии с этим обрабатываешь их. >тогда как же мне сортировать такие данные? После выборки естессно.
__________________
Над струнами вен моих Лезвия осени, Их сталь леденящая В просинь рук просится... ©Темнозорь |
|
|
|
|
# 7 |
|
::VIP::
IMHO Молодожен-2006 Регистрация: 14.06.2002
Адрес: Moscow
Сообщения: 2 921
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Madness
а, понял. спасибо. только вот тип данных-то у столбцов разный может быть. перед каждым столбцом еще один вести столбец, который определяет тип следущего? Merlin Cori ну вот у меня и делемма - либо так, либо как Madness говорит. Тока я видно еще не допонял
|
|
|
|
|
# 8 |
|
KpTeaM
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
hempsmoke
>еред каждым столбцом еще один вести столбец, который определяет тип следущего? Бррр, это то накой. Вводишь столбец(data_id) в стоке которого пишешь "профиль", например, а в data1,2,3 - 'nick123','nick123@mail.ru','число постов например'. В своей проге пишешь че-нить типа select * from table where data_id='профиль' и распоряжаешься данными, как данными профиля. Иль, например, data_id='mail', тогда в data1,2,3 например такое - 'nick123@mail.ru','smtp.mail.ru','pop.mail.ru'. И т.д. Соответственно вся логика в программе должна быть. ЗЫ. Делай как Merlin Cori грит, гемора меньше ;)
__________________
Над струнами вен моих Лезвия осени, Их сталь леденящая В просинь рук просится... ©Темнозорь |
|
|
|
|
# 9 |
|
::VIP::
IMHO Молодожен-2006 Регистрация: 14.06.2002
Адрес: Moscow
Сообщения: 2 921
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Madness
ну да, я так и думал )вот и я думаю как быть, ведь данных-то много. какой лучше способ выбрать с точки зрения времени обработки? забивать нулями неиспользуемые ячейки или как ты предложил ? |
|
|
|
|
# 10 |
|
::VIP::
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Имхо, хранить кучу данных в одной ячейке, которые могут обновляться независимо - не есть гуд.
Есть еще вариант, который у меня в свое время неплохо работал. Делаем три колонки в таблице: itemId, fieldType, fieldValue. Каждый объект, который нужно поместить в таблицу, имеет свой itemId. Для него мы имеем столько записей, сколько полей у этого объекта, с разными значениями fieldType (описывающими тип поля) и fieldValue (его значение). К примеру, если взять в качестве примера объекта "профиль" с id=3 и полями name, password и email, то в таблице для него получим следующее: 3 name Vasya 3 password qwerty 3 email asd@qwe.ru UNIQUE KEY = (itemId, fieldType) Ессно, fieldType лучше делать не текстовыми, а enum или внешним ключом в отдельную таблицу описаний. При этом получаем очень гибкую систему с любым количеством полей и отсутствием пустых избыточных ячеек.
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti Последний раз редактировалось Saruman; 03.05.2005 в 22:45. |
|
|
|
|
# 11 | |
|
Guest
Сообщения: n/a
|
Цитата:
|
|
|
|
# 13 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Это все здорово, но с точки зрения структуры (да и производительности в большинстве случаев), если это можно вписать в конечное количество отдельных таблиц то наверное так и логичнее будет сделать. Почему этот вариант отбросили?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
# 15 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|