Как правильно хранить списки в бд

IMW

Guest
Как правильно хранить списки в бд

Ну собственно сабж и почему 2,45,565,100 - неправильно
 

IMW

Guest
ну выбираю я хобби из кучи checkbox, выбрал с id 4,10,45,76,..
так их и в ячейку таблицы записал(4,10,45,76,12), ну собственно потом можно показать на сайте какие у меня хобби или по поиску найти, что я интересуюсь хобби с id 45. Тут товарищ написал, что так хранить неправильно, вот и интересно как правильно и че так нельзя.
 

Falc

Новичок
IMW
Причем тут списки?

Это класическое отношение многие ко многим.
 

IntenT

SkyDiver
в отдельной таблице. Каждое число в отдельной записи.
простейший вариант:

id|source_id|variant
 

crocodile2u

http://vbolshov.org.ru
То есть в поиске, если указать хобби = 5, поиск выдаст тебе и 5, и 15, и 25? Если это то, чего ты хочешь добиться, то ты делаешь правильно... Ну а если это все-таки не то, тогда смотри любую информацию, касающуюся реляционных БД, в частности, связи много ко многим.

Falc опередил.
 

IMW

Guest
список назвал, ну это ж список id может это и не коректно.
IntenT и чем этот метод лучше отношение многие ко многим.
Тут еще одну таблицу создвать надо.
 

Falc

Новичок
IMW
IntenT тебе как раз и описал реализацию этого отношения
 

IMW

Guest
да нет конечно, но должны же быть плюсы, поиск я через 4 like сделал и все нашел, так же и весь вывод через explode, просто интересно чем лучше?
 

Falc

Новичок
IMW
Положи в таблицу 100 тыс записей и сделай свой поиск.
 

IMW

Guest
ну если по вашему сделать то в одной будет 100 000 то в другой тыс 500, разве like в 100 000 будет медленней чем =
в 500 000, просто не знаю
 

SiMM

Новичок
IMW, не забывай о существовании индексации. В твоём случае она врядли будет полезна.
 

crocodile2u

http://vbolshov.org.ru
1. Поиск через LIKE - будет тормозить при большом кол-ве записей.
2. Разделять ID (если ты все-таки не послушаешь советов), надо будет несколько хитрее: при паттерне 1,2,3,...,N будут в поиске теряться крайние ID (либо ты можешь найти лишние - зависит от того, как ты составишь свой LIKE-запрос).
 
Сверху