trashcan
Новичок
Структура базы для хранения неограниченного кол-ва картинок
Пишу каталог для CMS, столкнулся с проблемой выбора оптимального решения:
Есть две таблицы (заполнил для примера).
Сложности возникли с полем типа images, так как этот тип предполагает хранение неограниченного кол-ва картинок, кроме того для каждой картинки должно быть предусмотрено описание. Поэтому вариант первый:
Хранить имена картинок в разных строках таблицы fields_values, но с одинаковым field_type. То есть так:
Описания в таком случае хранятся в таблице images с такой структурой:
Тогда для вывода нужно сделать запрос на получение всех value и field_type для определенного page_id, а потом каждый раз когда встречается тип "images" делать запрос к таблице images и получать описания, то есть сколько картинок, столько и отдельных запросов.
Второй вариант - хранить в fields_values только одну запись для всех картинок, а сами значения хранить в таблице images:
Казалось бы данный вариант лучше, так как одним запросом выдергивает все картинки с описаниями, но есть одно НО, а именно должно выполняться условие, что если какой-то из разделов каталога (который может быть страницей, но все равно содержать подразделы) не заполнен инфой, то должна отображаться инфа дочернего, поэтому выборка всех полей страницы идет по условию IS NOT NULL и в этом варианте картинки (даже если они загружены) будут продинамлены.
Далее моего воображения хватило на следующее:
- либо хранить в поле value таблицы fields_values текущее число картинок для конкрентного page_id, содержащихся в табл. images, и добавить к выборке полей условие "если тип=images и value!=0". Тогда каждый раз при удалении или добавлении картинок придется делать запросы на модификацию и этого поля тоже.
- либо оставить NULL и добавить в условие выборки подзапрос, который для типа images проверял бы кол-во записей в таблице images c требуемым value_id.
В общем-то, вопрос такой: какой из этих вариантов и подвариантов более здравый? Или может есть более адекватные пути?
Заранее благодарю всех, кто ответит, ну или хотя бы дочитает до конца
-~{}~ 22.10.07 16:21:
Может хоть скажете, что мне сделать с моим вопросом, чтобы все таки получить на него ответ.
А то у меня складывется впечатление, что для этого надо использовать хитроумную тактику: сначала написать коротко и невнятно, а потом, после фразы "Ясновидящих здесь нет" уже объяснять подробно. По крайней мере у других так прокатывало.
Пишу каталог для CMS, столкнулся с проблемой выбора оптимального решения:
Есть две таблицы (заполнил для примера).
PHP:
=field_types=
id | name
---------------
1 | textarea
2 | images
=fields_values=
id | page_id | field_type_id | value
---------------------------------------------------
1 | 1 | 1 | Какой-нибудь текст
2 | 1 | 2 | image
Хранить имена картинок в разных строках таблицы fields_values, но с одинаковым field_type. То есть так:
PHP:
=fields_values=
id | page_id | field_type | value
------------------------------------------------
1 | 1 | 1 | Какой-нибудь текст
2 | 1 | 2 | image1
3 | 1 | 2 | image2
4 | 1 | 2 | image3
PHP:
=images=
desc | fields_values_id
--------------------------------
Some_desc1 | 2
Some_desc2 | 3
Some_desc3 | 4
Второй вариант - хранить в fields_values только одну запись для всех картинок, а сами значения хранить в таблице images:
PHP:
=fields_values=
id | page_id | field_type | value
-------------------------------------------------
1 | 1 | 1 | Какой-нибудь текст
2 | 1 | 2 | NULL
PHP:
=images=
id | value | desc | fields_values_id
-------------------------------------------------
1 | image1 | Some_desc1 | 2
1 | image2 | Some_desc2 | 2
1 | image3 | Some_desc3 | 2
Далее моего воображения хватило на следующее:
- либо хранить в поле value таблицы fields_values текущее число картинок для конкрентного page_id, содержащихся в табл. images, и добавить к выборке полей условие "если тип=images и value!=0". Тогда каждый раз при удалении или добавлении картинок придется делать запросы на модификацию и этого поля тоже.
- либо оставить NULL и добавить в условие выборки подзапрос, который для типа images проверял бы кол-во записей в таблице images c требуемым value_id.
В общем-то, вопрос такой: какой из этих вариантов и подвариантов более здравый? Или может есть более адекватные пути?
Заранее благодарю всех, кто ответит, ну или хотя бы дочитает до конца

-~{}~ 22.10.07 16:21:
Может хоть скажете, что мне сделать с моим вопросом, чтобы все таки получить на него ответ.
А то у меня складывется впечатление, что для этого надо использовать хитроумную тактику: сначала написать коротко и невнятно, а потом, после фразы "Ясновидящих здесь нет" уже объяснять подробно. По крайней мере у других так прокатывало.