|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
|
Организация данных в бд22.03.2016, 14:43. Показов 943. Ответов 11
Метки нет (Все метки)
Всем привет.
Никак не могу определиться с организацией базы данных. Ситуация такая: нужно записать в таблицу сложные данные, состоящие из нескольких определённых полей (id, дата, имя, и т.п.) + неопределённого количества неопределённых полей. Проблема, как вы понимаете, в неопределённых полях. Вот я и думаю, как лучше поступить... Самый простой способ, конечно, решить проблему втупую: просчитать все возможные варианты, и создать таблицу с большим количеством полей "на все случаи жизни". Второй вариант - создать одну ячейку для всех неопределённых полей, и писать их туда в формате csv. И третий вариант - я нашёл в интернете, что с помощью serialize можно отправить в таблицу готовый массив. Но там была приписка, что при большом объёме данных, этот способ очень тормознутый. А у меня как раз большой объём данных. Как я понял, это касается и второго варианта, т.к. в обоих случаях придётся создавать поле неограниченного размера, что, видимо, не есть хорошо. Собственно вопрос, что мне делать? Сразу говорю, разбить на несколько таблиц - не вариант.
0
|
|
| 22.03.2016, 14:43 | |
|
Ответы с готовыми решениями:
11
Организация базы данных Двоичное дерево, как организация данных организация базы данных для детского центра |
|
94 / 94 / 36
Регистрация: 01.10.2014
Сообщений: 229
|
|
| 22.03.2016, 14:56 | |
|
ChildOfFlowers, Тут либо второй либо третий вариант. Со вторым тяжелее будет искать необходимый элемент , а с третьим вариантом я не знаю как вы поступите, когда необходимо будет еще поля добавлять - надо будет десериализовать со старым набором колонок перевести в новый и в каждую строку по новому посадить... Создавать базу, не зная какие у вас будут поля не совсем верный подход... Значит вы еще и структуру проги не знаете и как обрабатывать данные. Вы же не будете с каждым новым полем менять свой код?
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 22.03.2016, 15:18 | ||
|
Как я понимаю, этот подход похож на твой 1-й вариант. Остальные два - это нереляционный подход со всеми вытекающими, начиная от сложностей выборки, модификации, и кончая контролем целостности данных.
0
|
||
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
||||||
| 22.03.2016, 15:46 [ТС] | ||||||
|
В случае с массивом, мне ещё не понятно, в каком формате sql будет возвращать данные. И вообще, чем это отличается от csv? И можно ли будет производить поиск и сортировку по таким полям? Мне надо, чтобы было можно... в этом, собственно, вся задумка. Добавлено через 9 минут
0
|
||||||
|
94 / 94 / 36
Регистрация: 01.10.2014
Сообщений: 229
|
|
| 22.03.2016, 15:55 | |
|
ChildOfFlowers,
Я бы сделал проще. Создаем 3 таблицы: 1. Users (UserId,Name,Age....) - ну личная инфа 2. Colonki(ColonkiId,Name) -здесь храните(добавляете,удаляете) все возможные колонки для ваших пользователей 3. Table3(IdTable3,ColonkiId,UserId,ValueCo lonka) - а здесь уже храните значение определенной колонки для определенного пользователя.
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 22.03.2016, 15:59 | ||
|
0
|
||
|
94 / 94 / 36
Регистрация: 01.10.2014
Сообщений: 229
|
|
| 22.03.2016, 16:06 | |
|
0
|
|
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
|
| 22.03.2016, 16:14 [ТС] | |
|
SailarmoonKS, Grossmeister, т.е., о чём я и говорил... если сейчас у меня на каждого пользователя по одной таблице "contacts", а будет по две. В общем то, я этого хотел избежать... но если вы говорите, что это лучший вариант...
Добавлено через 1 минуту или я что-то не так понял?
0
|
|
|
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 22.03.2016, 16:20 | |
|
Мне кажется ТС пытается сделать классификацию. А посему - подчиненная таблица со списком всех возможных параметров и их значений. Отдельно обратить внимание на разные типы (тоже несколько вариантов реализации)
Единственный минус - городить кучу case в запросе придется. Но это плата за универсальность
0
|
|
|
94 / 94 / 36
Регистрация: 01.10.2014
Сообщений: 229
|
|
| 22.03.2016, 16:21 | |
|
В моем случае 3 таблицы, а в случае Grossmeister, создаете 2 таблицы. В первой статичное кол-во колонок -например 50 и помечаете их как field1,2,3..., а во второй таблице держите информацию для пользователя какое именно для каждого пользователя соответствие колонки -название(Для 1-ого пользователя домашнее животное -это field1, снилс - field2... Для второго пользователя номер машины - field1, название животного -field2..) Соответственно зная эту информацию, вы составляете необходимые sql запросы на изменение полей. Пользователь решил поменять свой номер телефона и нажимает сохранить - ваша программа обращается ко второй таблице и находит в каком поле для данного пользователя содержиться номер телефона и составляет запрос на изменение именно этого поля
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 22.03.2016, 16:23 | ||
Можно вообще иметь одну таблицу contacts, где с пом. доп. поля owner можно определить, чьи это контакты. Тогда в таблице метаданных тоже будет поле owner, где показано, что для этого пользователя fld1 - это номер машины, для другого - день рождения ребенка и т.д.
0
|
||
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
|
| 23.03.2016, 18:39 [ТС] | |
|
Grossmeister, не пинайте, если туплю... просто слишком много всего приходится обдумывать. Значит, как я понял, имеется таблица "users" со списком всех пользователей, их логинами, паролями, и т.д. И в ней же есть поле, в котором прописаны для каждого пользователя имена и псевдонимы полей в его таблице "contacts". Так чтоли?...
0
|
|
| 23.03.2016, 18:39 | |
|
Помогаю со студенческими работами здесь
12
Организация данных в таблице Организация базы данных Организация данных Организация базы данных с прайсами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|