Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
3 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 106

Хранение сложных структур данных в БД

30.11.2012, 16:22. Показов 1562. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникла такая проблема:
У меня есть N категорий сайтов. У каждого сайта есть M частей. Каждая часть имеет K пар "параметр:значение". На странице это будет выводится наподобие CSS-кода:

Название блока {
параметр:значение;
параметр:значение;
параметр:значение;
}

Таких блоков будет множество у каждой категории.
Возник вопрос в каком виде хранить это в БД.
Придумал 4 варианта, но у каждого есть минусы. Подскажите как поступить
Вот варианты:
Вариант 1:
Каждая категория - таблица. Каждый блок - запись. Есть поле с массивом параметров и поле с массивом их значений. Минус: множество таблиц.

Вариант 2:
1 таблица. Каждый блок - записью. Каждая категория - поле. Минус: проблемы с автоматическим добавлением категорий.

Вариант 3:
1 таблица. Каждый блок - поле. Каждая категория - запись. Минус: проблемы с автоматическим добавлением блоков.

Вариант 4:
1 таблица. Каждая категория - запись. В записи хранится массив блоков, в каждом элементе этого массива блоков есть массив параметров и массив значений. Минус: будут очень тяжелые структуры данных (массив с массивами, в котором тоже массивы).

Как поступить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2012, 16:22
Ответы с готовыми решениями:

Описать одну из сложных динамических структур данных
Нужно написать программку... Тема: Линейный односвязный список. Добавление узла после заданного. P.S. на форуме искал посчет этого,...

Хранение структур данных
Здравствуйте! Задача: имеется xml-файл, необходимо распарсить его и представить элементы в виде массива экземпляров определенного...

Организовать хранение набора данных с помощью массива структур
Организовать хранение набора данных с помощью массива структур. Написать метод для заполнения массива данными. Написать метод для...

11
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
30.11.2012, 17:39
1 таблица id_category, name_category
2 таблица id_block, id_category, name_block
3 таблица id_item, id_block, key, value

Добавлено через 2 минуты
это если у каждой части(block) может быть только одна категория, и у каждой пары (item) может быть только одна часть
1
3 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 106
30.11.2012, 19:51  [ТС]
alpex, а не будет долго обрабатываться, если пар (items) будет огромное количество в базе?
В таком случае не практичнее будет создать 2 сериализованных массива (один с ключами, второй со значениями) и запихнуть в таблицу , что у вас №2 ?
интересует именно скорость работы
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
01.12.2012, 06:03
огромное количество это сколько?
1
3 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 106
01.12.2012, 11:27  [ТС]
alpex, количество пар будет около 10 000.
Поэтому важно чтоб запрос обрабатывался не слишком долго
Хотя с выражением огромное количество я погорячился.
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
01.12.2012, 11:33
alexandre0sheva, вам надо чтобы все сразу выводилось? Или может попробуете навигацию?
1
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
01.12.2012, 11:35
мне кажется что 10000 для поиска по индексированному полю не так уж и много, хотя я могу ошибаться
ну сериализуйте массив тогда и записывайте во вторую таблицу, только я непонимаю зачем ключи и значения разносить по отдельным массивам, проще наверное будет тогда загнать в многомерный массив все данные, и сериализовать его, для каждого блока (части) получится многомерный массив со значениями
1
3 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 106
01.12.2012, 11:46  [ТС]
Maksimchikfull, надо сразу, навигация не подойдет


alpex, тогда надо будет ансериализовать 1 массив на 10000 элементов, а потом ансериализовать еще 10000 массивов. Точно не знаю, но кажется, что нагрузка на сервер будет громадная
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
01.12.2012, 11:55
так у вас в каждой части(блоке) по 10000 пар ключ=значение?

Добавлено через 2 минуты
опишите подробнее что у вас там и как, полностью систему
0
3 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 106
01.12.2012, 11:55  [ТС]
alpex, нет. Примерно будет так: 20 категорий. В каждой по 50 блоков. В каждом блоке по 10 пар.
Но меня крайне волнует именно оптимизация скорости работы.
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
01.12.2012, 12:06
загоняете эти 10 пар в массив, сериализуете и помещаете его в поле к соответсвующему блоку
1 таблица id_category, name_category
2 таблица id_block, id_category, name_block, array
PHP
1
$array = serialize(array('a' => '1','b' => '2',...));
Добавлено через 2 минуты
хотя мне почему то кажется, что с тремя таблицами, как я писал первый раз , будет лучше
может кто поумнее чего скажет
1
3 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 106
01.12.2012, 12:09  [ТС]
alpex, точно, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.12.2012, 12:09
Помогаю со студенческими работами здесь

Хранение сложных классов в контейнере
Всем, привет. Прошу помощи в одной проблемке. В общем у нас должны быть два контейнера. Один должен хранить объекты по значению, а...

Хранение и отображение на форме сложных объектов
Добрый день Имеется сложный класс Mess: public class Header { public uint commLength; public uint commID; ...

Превращение сложных списочных структур
Использование функций Лиспа, разрушающих структуры: проверка архитектуриструктур с помощью предикату eq.

Построение сложных структур в динамической памяти
Объясните пожалуйста задание. Обычные структуры я строил, а вот подобное нет. Даже не знаю с чего начать. Помогите хотя бы словесно...

Возврат сложных структур из функции - паттерн матчинг
Несколько раз сталкивался с необходимостью написать функцию, которая возвращает много значений (пар, троек, все это объединено в список),...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru