|
|
|
Таблица для результатов расчета (около 70 колонок)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Разрабатываю небольшую систему на Delphi, в качестве СУБД выбрал PostgreSQL. Суть системы в следующем : Пользователю доступны различные экранные формы для выполнения расчетов (около 15). На каждой форме 5-20 полей ввода(параметров). После заполнения полей формы выполняется расчет и результат выводится пользователю в виде отчета. Необходимо хранить все исходные данные для расчетов (параметры), некоторые промежуточные данные и собственно результаты расчетов(в среднем 5 штук на 1 расчет). В дальнейшем по этим данным планируется строить отчеты, больше нигде эти данные участвовать не будут. Пока данные хранятся следующим образом: Исходные данные для всех расчетов в таблице "SOURCE_DATA" (в таблице около 40 полей) Промежуточные данные и результаты расчетов в таблице "RESULT_DATA" (в таблице около 70 полей) Во всех расчетах многие поля пересекаются, поэтому колонок еще не так много. Смущает только большое количество колонок в таблице. Стоит ли для каждого типа расчета создавать таблицу со своим набором полей или стоит посмотреть в сторону EAV? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:05 |
|
||
|
Таблица для результатов расчета (около 70 колонок)
|
|||
|---|---|---|---|
|
#18+
МинВода ЕссентукиСтоит ли для каждого типа расчета создавать таблицу со своим набором полейПравильно ли я понял, что сейчас в вашей широкой таблице большинство полей очень часто (в большинстве записей) содержат NULL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:16 |
|
||
|
Таблица для результатов расчета (около 70 колонок)
|
|||
|---|---|---|---|
|
#18+
ПаганельПравильно ли я понял, что сейчас в вашей широкой таблице большинство полей очень часто (в большинстве записей) содержат NULL ? Совершенно верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:28 |
|
||
|
Таблица для результатов расчета (около 70 колонок)
|
|||
|---|---|---|---|
|
#18+
если перечень расчетов и параметров не меняется динамически, то рекомендуюМинВода Ессентукидля каждого типа расчета создавать таблицу со своим набором полей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:31 |
|
||
|
Таблица для результатов расчета (около 70 колонок)
|
|||
|---|---|---|---|
|
#18+
Паганельесли перечень расчетов и параметров не меняется динамически, то рекомендую В данном случае смущает дублирование параметров в таблицах. Например параметр площадь покрытия очень часто встречается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 15:59 |
|
||
|
Таблица для результатов расчета (около 70 колонок)
|
|||
|---|---|---|---|
|
#18+
МинВода ЕссентукиВ данном случае смущает дублирование параметров в таблицахИ какие проблемы могут из-за этого возникнуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 16:05 |
|
||
|
Таблица для результатов расчета (около 70 колонок)
|
|||
|---|---|---|---|
|
#18+
ПаганельИ какие проблемы могут из-за этого возникнуть? Да собственно никаких, но получится около 15 таблиц, хотя можно было бы все колонки свалить в одну. По идее даже если все данные будут в одной таблице, то никаких аномалий вставки/обновления и т.д. не будет. Так зачем разносить по разным таблицам? Для порядка? Что бы проще было... типа вот для этого расчета эта табличка, для этого вот эта, а если хотим добавить или удалить параметры для определенного расчета, то и добавляем/удаляем из соответствующей таблицы не задумываясь о том, что можем принести вред остальным расчетам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 17:11 |
|
||
|
Таблица для результатов расчета (около 70 колонок)
|
|||
|---|---|---|---|
|
#18+
МинВода ЕссентукиТак зачем разносить по разным таблицам? Для порядка?А как Вы сейчас целостность обеспечиваете? Наверное, сложными констрейнтами типа "если тип расчета равен 2 то параметр1 not null, а если тип расчета равен 3 то параметр1 может быть null и т.д." А разнесете по разным таблицам - будет просто: в таблице "расчет2" поле "параметр1" not null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 17:17 |
|
||
|
Таблица для результатов расчета (около 70 колонок)
|
|||
|---|---|---|---|
|
#18+
ПаганельА как Вы сейчас целостность обеспечиваете? Для каждого расчета написана своя хранимка, в которой проверяются входные параметры на корректность. Редактирование данных только через хп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 18:01 |
|
||
|
Таблица для результатов расчета (около 70 колонок)
|
|||
|---|---|---|---|
|
#18+
МинВода ЕссентукиДля каждого расчета написана своя хранимка, в которой проверяются входные параметры на корректностьто есть не сложными констрейнтами таблицы, а такими же сложными проверками в хранимке суть та же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 18:06 |
|
||
|
Таблица для результатов расчета (около 70 колонок)
|
|||
|---|---|---|---|
|
#18+
Для принятия решения у Вас недостаточно данных. "большое количество колонок в таблице" это ваше субъективное мнение. Возможно у вас есть объективные причины так считать, но вы их умалчиваете или ещё не осознали. Нужно расмотреть все варианты использования этих таблиц, причём как в runtime так и в designtime. Тогда, возможно у вас возникнут обоснованные аргументы для принятия того или иного решения. Например, поля, которые не должны участвовать в конкретной процедуре расчёта могут быть случайно задействованы вместо тех полей, которые должны участвовать. Если в таблице с параметрами процедуры оставить только необходимые поля, ошибка может быть выявлена ещё на этапе компиляции. Ситуация осложняется ещё и тем, что описания подмножеств полей для каждой процедуры придётся хранить отдельно от описания таблицы в каталоге БД и следить за актуальностью этих данных. Положим, у нас есть относительно небольшое количество расчётов, которые используются повсеместно и много прочих расчётов, которые нужны относительно редко. Если хранить все расчёты в одной таблице, на этапе выполнения СУБД придётся лопатить много ненеревантных данных, чтобы в большой куче записей многократно находить те немногочисленные, но такие востребованные записи. Про проверки целостности данных уже говорили. Ну и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 20:18 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36777978&tid=1542598]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 478ms |

| 0 / 0 |
