| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Как лучше сделать структуру таблицы |
| Автор: lemniscate 14.5.2012, 13:36 | ||
| Добрый день уважаемые форумчане! Обращаюсь с такой просьбой, помогите правильно (т.е. как можно проще) организовать структуру данных в mysql и вывод их в php в конечном итоге надо получить html-таблицу следующего вида.
http://s2.ipicture.ru/ таблица состоит из источников финансирования, и структура этих источников находится в постоянном изменении. Например могут убрать подисточники, могут источник целиком и т.д. у каждой организации разные источники. Т.е. структура таблицы плавающая. К тому же количество подисточников также варьируется на "глубину", т.е. не известно сколько их может быть, например субсидия по ГЗ это подисточник бюджета, а услуги это источник субсидии на ГЗ. Может произойти так что и у услуги появятся свои подисточники и т.д. Это маленький кусочек из огромной таблицы. Экономисты раньше вели его в excele, что крайне не удобно. Вообщем, конкретно в данном примере, колонки - Услуги, Хоз., Имущество и Целевая субсидия - колонки которые содержат конкретные значения. а Колонки Всего по всем..., Всего по бюджету, Субсидия по ГЗ это колонки с суммами и эти суммы, думаю лучше и не хранить в бд, а суммировать при выводе. Подскажите как правильно организовать структуру хранения в бд этих данных. Пока думаю сделать чтобы в одной таблице хранился список всех источников и подисточников, при это в каждой строке указывалось к ид какого источника относится данный подисточник. ну например что то в этом роде: http://s2.ipicture.ru/ где поле plan_src_sub_id и есть указатель на своего "родителя" т.е. к какому источнику относится. Но берут меня сомнения по поводу этого способа. Прошу помочь как сделать лучше? |
| Автор: vlproject 27.5.2012, 22:35 | ||
Именно так и надо хранить, ведь у каждого источника есть:
Только при удалении источника не забывайте проверять, есть ли у него дети (из по хорошему тоже удалять надо) |
| Автор: lemniscate 7.6.2012, 10:06 | ||
| Ок, спасибо! так и сделал. Сделал вот такую функцию.
Но вот ни как не могу сообразить, как сделать так чтобы данная функция строила таблицу в том виде которая необходима как в первой теме? Т.е. чтобы все "дочки" были под строкой 'в том числе'. |
| Автор: lemniscate 25.6.2012, 07:38 |
| неужели никто не знает как? :( |
| Автор: MaXL 26.6.2012, 07:23 | ||||
а в вашей структуре могут быть циклы ? т.е. может у какой-то записи быть два родителя ? lemniscate функцию выводящую это писать лениво. использование рекурсии правильный подход, но может быть стоит пользоваться на colspan и rowspan, а вставлять дополнительные таблицы, содержащие подисточники, т.е. что-то типо:
т.е. если есть дочернии, то прописываешь rowspan="2" и рекурсивно вызываешь себя. |
| Автор: lemniscate 26.6.2012, 09:12 |
| тогда другой вопрос, если сделать все дочерние элементы в отдельную таблицу то как размеры ячеек вложенной таблицы согласуются с размеры тех данных которые будут ниже, а там может быть более сотни строк содержащие значения ... |
| Автор: MaXL 30.6.2012, 17:40 |
| не понял. ячейка же будет растягиваться, под своё содержимое. |