powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблица для результатов расчета (около 70 колонок)
11 сообщений из 11, страница 1 из 1
Таблица для результатов расчета (около 70 колонок)
    #36777383
Здравствуйте,

Разрабатываю небольшую систему на Delphi, в качестве СУБД выбрал PostgreSQL.
Суть системы в следующем :
Пользователю доступны различные экранные формы для выполнения расчетов (около 15).

На каждой форме 5-20 полей ввода(параметров).

После заполнения полей формы выполняется расчет и результат выводится пользователю в виде отчета.

Необходимо хранить все исходные данные для расчетов (параметры), некоторые промежуточные данные и собственно результаты расчетов(в среднем 5 штук на 1 расчет).
В дальнейшем по этим данным планируется строить отчеты, больше нигде эти данные участвовать не будут.

Пока данные хранятся следующим образом:

Исходные данные для всех расчетов в таблице "SOURCE_DATA" (в таблице около 40 полей)

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

Смущает только большое количество колонок в таблице.

Стоит ли для каждого типа расчета создавать таблицу со своим набором полей или стоит посмотреть в сторону EAV?
...
Рейтинг: 0 / 0
Таблица для результатов расчета (около 70 колонок)
    #36777421
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МинВода ЕссентукиСтоит ли для каждого типа расчета создавать таблицу со своим набором полейПравильно ли я понял, что сейчас в вашей широкой таблице
большинство полей очень часто (в большинстве записей) содержат NULL ?
...
Рейтинг: 0 / 0
Таблица для результатов расчета (около 70 колонок)
    #36777466
ПаганельПравильно ли я понял, что сейчас в вашей широкой таблице
большинство полей очень часто (в большинстве записей) содержат NULL ?
Совершенно верно.
...
Рейтинг: 0 / 0
Таблица для результатов расчета (около 70 колонок)
    #36777484
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если перечень расчетов и параметров не меняется динамически, то рекомендуюМинВода Ессентукидля каждого типа расчета создавать таблицу со своим набором полей
...
Рейтинг: 0 / 0
Таблица для результатов расчета (около 70 колонок)
    #36777590
Паганельесли перечень расчетов и параметров не меняется динамически, то рекомендую
В данном случае смущает дублирование параметров в таблицах. Например параметр площадь покрытия очень часто встречается.
...
Рейтинг: 0 / 0
Таблица для результатов расчета (около 70 колонок)
    #36777617
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МинВода ЕссентукиВ данном случае смущает дублирование параметров в таблицахИ какие проблемы могут из-за этого возникнуть?
...
Рейтинг: 0 / 0
Таблица для результатов расчета (около 70 колонок)
    #36777830
ПаганельИ какие проблемы могут из-за этого возникнуть?
Да собственно никаких, но получится около 15 таблиц, хотя можно было бы все колонки свалить в одну. По идее даже если все данные будут в одной таблице, то никаких аномалий вставки/обновления и т.д. не будет. Так зачем разносить по разным таблицам? Для порядка? Что бы проще было... типа вот для этого расчета эта табличка, для этого вот эта, а если хотим добавить или удалить параметры для определенного расчета, то и добавляем/удаляем из соответствующей таблицы не задумываясь о том, что можем принести вред остальным расчетам?
...
Рейтинг: 0 / 0
Таблица для результатов расчета (около 70 колонок)
    #36777839
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МинВода ЕссентукиТак зачем разносить по разным таблицам? Для порядка?А как Вы сейчас целостность обеспечиваете?
Наверное, сложными констрейнтами типа
"если тип расчета равен 2 то параметр1 not null, а если тип расчета равен 3 то параметр1 может быть null и т.д."

А разнесете по разным таблицам - будет просто: в таблице "расчет2" поле "параметр1" not null
...
Рейтинг: 0 / 0
Таблица для результатов расчета (около 70 колонок)
    #36777963
ПаганельА как Вы сейчас целостность обеспечиваете?

Для каждого расчета написана своя хранимка, в которой проверяются входные параметры на корректность. Редактирование данных только через хп.
...
Рейтинг: 0 / 0
Таблица для результатов расчета (около 70 колонок)
    #36777978
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МинВода ЕссентукиДля каждого расчета написана своя хранимка, в которой проверяются входные параметры на корректностьто есть не сложными констрейнтами таблицы,
а такими же сложными проверками в хранимке
суть та же
...
Рейтинг: 0 / 0
Таблица для результатов расчета (около 70 колонок)
    #36778218
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для принятия решения у Вас недостаточно данных.

"большое количество колонок в таблице" это ваше субъективное мнение. Возможно у вас есть объективные причины так считать, но вы их умалчиваете или ещё не осознали.

Нужно расмотреть все варианты использования этих таблиц, причём как в runtime так и в designtime. Тогда, возможно у вас возникнут обоснованные аргументы для принятия того или иного решения.

Например, поля, которые не должны участвовать в конкретной процедуре расчёта могут быть случайно задействованы вместо тех полей, которые должны участвовать. Если в таблице с параметрами процедуры оставить только необходимые поля, ошибка может быть выявлена ещё на этапе компиляции. Ситуация осложняется ещё и тем, что описания подмножеств полей для каждой процедуры придётся хранить отдельно от описания таблицы в каталоге БД и следить за актуальностью этих данных.

Положим, у нас есть относительно небольшое количество расчётов, которые используются повсеместно и много прочих расчётов, которые нужны относительно редко. Если хранить все расчёты в одной таблице, на этапе выполнения СУБД придётся лопатить много ненеревантных данных, чтобы в большой куче записей многократно находить те немногочисленные, но такие востребованные записи.

Про проверки целостности данных уже говорили.

Ну и т.д.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблица для результатов расчета (около 70 колонок)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]