LINUX.ORG.RU

иерархия блоков

 , ,


0

1

Здравствуйте. У меня возникла такая задача:
Есть сайт, на котором есть
--страницы
---на страницах размещены БЛОКИ
----а в блоках размещены ПОД_БЛОКИ

Как, логически и программно правильно, организовать хранение данных в mysql ?

На каждой странице может быть разное количество и комбинация блоков,
а в каждом блоке может быть разное количество и комбинация под_блоков

★★★

Последнее исправление: disee (всего исправлений: 1)

Обычное дерево.

pi11 ★★★★★
()

посмотри на лор - теже грабли вид збоку

visual ★★★
()

Как, логически и программно правильно, организовать хранение данных в mysql ?

Логически правильно не организовывать хранение данных в mysql.

Munhgauzen
()

как выше уже сказали, это обычное дерево. вы может первый раз с этим сталкиваетесь?

будет простая таблица из 3х столбцов, - родительский ID, дочерний ID, и собственно ID с блоком или чем-то там еще.

имеем блоки с ID: 1 2 3 4 5 6 7 8 корневой блок 1, затем два блока 2 и 3, затем 4 5 6 принадлежат 2-му, а 7 и 8 оставшемуся 3-му

записи в таблице эти будут выглядить так:

1 | 2 | ...
1 | 3 | ...
2 | 4 | ...
2 | 5 | ...
2 | 6 | ...
3 | 7 | ...
3 | 8 | ...

и вам необходимо лишь написать ресурсивную функцию (которая будет вызывать сама себя) в процессе рисования этого «дерева» блоков. нам нужно знать лишь один родительский ID, с которого все начинается, это 1. входим в функцию с параметром «1», которую просим нарисовать всех дочек этого параметра (1). затем в процессе рисования еще просим нарисовать всех дочерних дочек этого 1 - то есть, дочерние 2 и 3. и так далее... надеюсь поняли)..

и в итоге, получится так:

  1
  |--  2
  |    |-- 4
  |    |-- 5
  |    `-- 6
  `--  3
       |-- 7
       `-- 8

и выкиньте из головы «блоки» и «подблоки», - не должно быть ограничений никаких. и еще раз, - просто рекурсивно рисуйте дерево, изначально задав родителя, а затем функция должна уже вызывать сама себя, чтобы рисовать дочерних дочек и т.д.

Spoofing ★★★★★
()
Ответ на: комментарий от power

Для особо одаренных поясню.

ТС определился со структурой данных:

--страницы
---на страницах размещены БЛОКИ
----а в блоках размещены ПОД_БЛОКИ

Далее, НЕглядя на своё определение он не пытается выбрать backend для их хранения. А спрашивает как _логично_ эти данные сложить именно в мускуль.

Так вот под «организовывать» (тут я думаю и тебе очевидно) он подразумевает как отразить эту вложенность в плоские таблицы. Говоря попросту, он спрашивает, какие именно костыли должны оказаться логичными.

Поэтому я ответил, что хранение такой структуры в реляционке нелогично. Впрочем тебе наверное виднее.

Munhgauzen
()
Ответ на: комментарий от disee

а как тогда структурировано хранить данные?

Сколько будет данных (одна тысяча, десять тысяч, миллион)? Кто и как их будет складывать (будет ли админка для ввода блондинкой)?

Простите великодушно, что отвечаю вопросом на вопрос.

Munhgauzen
()
Ответ на: комментарий от Spoofing

помогли понять концепцию. Дальше, думаю, я разберусь сам, спасибо.

disee ★★★
() автор топика

xml + xslt

В зюмеле изобразил структуру блоков, в xslt раскрасил их красиво. выгода.

r_asian ★☆☆
()
Ответ на: комментарий от Munhgauzen

Все правильно сказал.

Такие данные надо складывать в файловую систему/кей-валуе базу/xml в зависимости от ситуации и случая. Нафиг их совать в таблицу?

Suntechnic ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.