powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильный подход к созданию базы. НУЖЕН СОВЕТ
25 сообщений из 26, страница 1 из 2
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35123518
saj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
saj
Гость
Задача:Медицинская тематика. Имеется задача по формализации признаков детей находящихся в очень тяжелом и крайне тяжелом состоянии для облечения последующей работы и высвобождения времени от рутинной писанины. Самое главное, необходимость выборки конкретного ребенка для оценки его в динамике.

Имеется массив признаков ,которые оператор будет заполнять в форме методом выборке. По предварительной работе полечается кроме больших таблиц еще и "куча" маленьких.
Например:
Таблица- Оценка по системам:
Признак- Сознание, реакция на осмотр, судороги, цвет кожного покрова, сыпь, тургор мягких тканей и ще штук 50 признаков. Каждый признак имеет параметрические оценки: -1, 0, 1, 2, 3, 4, 5, 6, 7. Но описательные параметрические оценки для опретатора разные:
Для сознания:Нет данных.Сохранено полностью.Оглушение.Возбуждение.Сопор.Кома поверхностная.Кома глубокая.
Для реакции на осмотр:Нет данных. Адекватная. Снижена. Выраженное возбуждение или судороги.Пат. позотонические реакции.Отсутствует.

В основную таблицу будет вносится числовое значение.

Вопрос
Правильно ли, есля я буду делать для каждого приизнака свою таблицу подстановки значения ?По моим примерным подсчетам их будет более 200.
Насколько такие огромные массивы могут повлиять в последующем на быстродействие базы?
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35123545
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saj пишет:
> Правильно ли, есля я буду делать для каждого приизнака свою таблицу
> подстановки значения ?

Видимо, нет. Надо делать одну таблицу, в PK которой будет входить
тип признака.

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

слабо, при правильном проектировании БД.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35123556
saj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
saj
Гость
Не понятно, как можно сделать одну таблицу, еслс на все 9 значений каждого признака разные описательные данные? Примерно 240....
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35123591
sajНе понятно, как можно сделать одну таблицу, еслс на все 9 значений каждого признака разные описательные данные? Примерно 240....
Очень просто.
Например, будут таблицы:
автор
Признаки (ID признака, название)
Значения признаков (ID признака,NUM_Value,String_value)

В NUM_Value помещем числовые значения (-1,0,1 и т.д.), а в String_value - соответствующее текстовое описание для признака с конкретным ID призака. Итого получаем два файла. В одном будет <количество признаков> строк, в другом - "примерно 240"...
Затем String_value используем для построения "человеческого" интерфейса (комбо-боксы, выдача в колонки отчета и т.д.), а NUM_Value - для хранения в БД.
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35123618
sajВопрос
Правильно ли, есля я буду делать для каждого приизнака свою таблицу подстановки значения ?По моим примерным подсчетам их будет более 200.
Насколько такие огромные массивы могут повлиять в последующем на быстродействие базы?
В свете вышесказанного "перекодировочные" таблицы будут получаться из "основной" по параметризованному запросу:

Select * from <Значения признаков> where ID = <параметр - запрошенный ID> order by Num_value
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35123767
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sajЗадача:Медицинская тематика.
....
Вопрос
Правильно ли, есля я буду делать для каждого приизнака свою таблицу подстановки значения ?По моим примерным подсчетам их будет более 200.
Насколько такие огромные массивы могут повлиять в последующем на быстродействие базы?Посмотрите в сторону EAV.
Вот описание - здесь тоже медицинская тематика .

У EAV есть серьезная проблема - это быстродействие.
Коснется она вас или нет - зависит от того как все остальное спроектируете.
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35123950
saj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
saj
Гость
Спасибо, попробую.....
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35124119
saj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
saj
Гость
Пардон.... Это значит, что оператор должен будет выбирать значение для признака из 200 параметров?
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35124145
sajПардон.... Это значит, что оператор должен будет выбирать значение для признака из 200 параметров?
Нет, из 9 для каждого признака:
Станислав С...кий
... "перекодировочные" таблицы будут получаться из "основной" по параметризованному запросу:

Select * from <Значения признаков> where ID = <параметр = запрошенный ID признака> order by Num_value


Для EAV просто Select будет другой....
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35125602
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если значения признаков состоят только из описания, то удобно завести одну таблицу-словарь вида (признак, код, описание). FK можно и не делать. Если с каждым признаком связаны какие то дополнительные атрибуты, кроме описания, то имеет смысл завести разные таблицы с соответствующей структурой. Например признаки цвета могут содержать значения области RGB, признаки сыпи фотограции образцов таковой и т.п.. В прочем и эти атрибуты можно попробовать свести в унифицированную структуру справочника и оценить ++ и -- от её использования.
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126486
saj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
saj
Гость
в String_value - соответствующее текстовое описание для признака с конкретным ID призака....


Вся и беда то в том , что текстовые описания для каждого значеня в зависимости от признрка разные...
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126591
saj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
saj
Гость
sajв String_value - соответствующее текстовое описание для признака с конкретным ID призака....


Вся и беда то в том , что текстовые описания для каждого значеня в зависимости от признрка разные...

Т.е


Сознание sosnanie -1 Нет данных
0 Сохранено полностью
1 Оглушение
2 Возбуждение
3 Сопор
4 Кома поверхностная
5 Кома глубокая

Судороги за последние 6 часов
sudorogi -1 Нет данных
0 Отсутствовали
1 Фокальные неповоторяющиеся
2 Фокальные неповторяющиеся
3 Генерализованные повторяющиеся
4 Статус

И.Т.Д
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126637
sajв String_value - соответствующее текстовое описание для признака с конкретным ID призака....


Вся и беда то в том , что текстовые описания для каждого значеня в зависимости от признрка разные...
Sorry, а что, у Вас оценки всех признаков будут "биться" в одно поле записи?! Это не есть гуд для хранения в БД; это гуд только при выводе в отчет...

Мое решение - делаем следующие таблицы для пациентов:
Код: plaintext
1.
2.
Пациент (ID пациента, Фамилия, Имя, Отчество, возраст, адрес, и т.д.)
Состояние пациента(ID пациента, ID признака, NUM_Value_оценки, дата_освидетельствования)
На форме оператор выбирает пациента, ставит дату проведения освидетельсвования, выбирает признак, выбирает значение признака (через его текстовое описание!). После этого нажимает кнопку "Сохранить". Затем выбирает другой признак, его значение и сохраняет в базе и т.д.
Если говорить более понятным языком, то получается как бы связка Регистрация - Спецификация (или Шапка документа - Спецификация), где в регистрации указывается постоянная часть "документа", а в спецификации - "переменная".... При этом, в спецификации может быть много строк...
Возьмите и изучите любую счет-фактуру, чтобы понять принцип, о котором я говорю...
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126715
saj sajв String_value - соответствующее текстовое описание для признака с конкретным ID призака....


Вся и беда то в том , что текстовые описания для каждого значеня в зависимости от признрка разные...

Т.е


Сознание sosnanie -1 Нет данных
0 Сохранено полностью
1 Оглушение
2 Возбуждение
3 Сопор
4 Кома поверхностная
5 Кома глубокая

Судороги за последние 6 часов
sudorogi -1 Нет данных
0 Отсутствовали
1 Фокальные неповоторяющиеся
2 Фокальные неповторяющиеся
3 Генерализованные повторяющиеся
4 Статус

И.Т.Д
Ну и будет у Вас:
1. Признаки:
Код: plaintext
1.
2.
3.
4.
5.
ID признака                        Наименование
   10                                   Сознание 
   20                                   Судороги за последние 6 часов
   30                                   Реакция зрачков на свет
   40                                   .....

2. Значения признаков:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
ID признака          NUM_Value        String_Value
   10                          -1	           Нет данных
   10                           0	           Сохранено полностью
   10		        1	           Оглушение
   10                           2	            Возбуждение
   10		        3	            Сопор
   10		        4	            Кома поверхностная
   10		        5	            Кома глубокая
   20                          -1	            Нет данных
   20		        0	            Отсутствовали
   20		        1	            Фокальные неповоторяющиеся
   20		        2	            Фокальные неповторяющиеся
   20 		        3	            Генерализованные повторяющиеся
   20		        4	            Статус
   30                           -1	            Нет данных
....

3. Пациенты
Код: plaintext
1.
2.
ID пациента          ФИО                                  Примечание
   010                   Иванов Петр Петрович           10 лет

4. Состояние пациента
Код: plaintext
1.
2.
3.
4.
5.
6.
ID пациента          ID признака          NUM_value      Дата_освидетельствования
     010                       10                     -1                     10.10.2000
     010                       20                     0                      10.10.2000
     010                       10                     0                       11.10.2000
     010                        20                    0                       11.10.2000
....   

Сейчас понятно?
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126729
saj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
saj
Гость
В общей таблице для каждого признака свое поле, в которое должно попасть цифровое значение признака. Признаков много, а описаний ще больще потому, что они разные. Хотя ьаксимальная цифра значения признака 8.
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126734
saj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
saj
Гость
Буду ваять. Переделывать все, не первый раз.
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126785
sajБуду ваять. Переделывать все, не первый раз.
Зачем же все? Немного доделать...
То, о чем Вы говорите - это отчет/печатный документ. Это решается через таблицу для настройки (типа первая колонка - обозначает признак № 10, вторая - признак № 2 и т.д).
Была у меня похожая задача, из бухгалтерии... Только там надо было еще считать итоги, типа строка_10+строка_20 или (колонка_1-колонка_2)*колонка_3... Оказалось - не так сложно, как казалось...
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126857
saj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
saj
Гость
А в форме выборку значения данного признака нужно сделать через связь признак - значения признака по его ID?
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126866
sajА в форме выборку значения данного признака нужно сделать через связь признак - значения признака по его ID? Да.
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126868
saj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
saj
Гость
СПАСИБО
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126883
saj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
saj
Гость
2. Значения признаков:

ID признака NUM_Value String_Value
10 -1 Нет данных
10 0 Сохранено полностью
10 1 Оглушение
10 2 Возбуждение
10 3 Сопор
10 4 Кома поверхностная
10 5 Кома глубокая
20 -1 Нет данных
20 0 Отсутствовали
20 1 Фокальные неповоторяющиеся
20 2 Фокальные неповторяющиеся
20 3 Генерализованные повторяющиеся
20 4 Статус
30 -1 Нет данных

Может быть добавить 4 столбец, как обозначение признака?


ID признака NUM_Value String_Value Name_Value
10 -1 Нет данных Сознание
10 0 Сохранено полностью Сознание
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35126947
saj2. Значения признаков:

ID признака NUM_Value String_Value
10 -1 Нет данных
10 0 Сохранено полностью
10 1 Оглушение
10 2 Возбуждение
10 3 Сопор
10 4 Кома поверхностная
10 5 Кома глубокая
20 -1 Нет данных
20 0 Отсутствовали
20 1 Фокальные неповоторяющиеся
20 2 Фокальные неповторяющиеся
20 3 Генерализованные повторяющиеся
20 4 Статус
30 -1 Нет данных

Может быть добавить 4 столбец, как обозначение признака?


ID признака NUM_Value String_Value Name_Value
10 -1 Нет данных Сознание
10 0 Сохранено полностью Сознание
Зачем? Это Name_Value уже есть в таблице Признаки. Эту "таблицу" получаем запросом:
Код: plaintext
1.
Select a.ID,a.Num_value,a.String_value,b.Name from Значения признаков a, Признаки b
where a.id = b.id
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35127078
nosov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор
2. Значения признаков :
................................................
20 1 Фокальные неповоторяющиеся
20 2 Фокальные неповторяющиеся
.................................................

исправить надо !!!
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35128588
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий

Мое решение - делаем следующие таблицы для пациентов:
Код: plaintext
1.
2.
Пациент (ID пациента, Фамилия, Имя, Отчество, возраст, адрес, и т.д.)
Состояние пациента(ID пациента, ID признака, NUM_Value_оценки, дата_освидетельствования)
...

1. От ID признака в Состоянии пациента можно и нужно (в силу избыточности) легко избавиться.
2. Предложенная EAV модель данных красиво смотрится, но увы плохо работает в реляционной СУБД. Если не стоит задача динамически создавать новые признаки, то в реляционной БД следует создать для каждого значения признака отдельную колонку в таблице состояния, иначе получение общего состояния пацианта из отдельных записей-признаков скоро станет неподъёмной задачей для СУБД.
...
Рейтинг: 0 / 0
Правильный подход к созданию базы. НУЖЕН СОВЕТ
    #35128624
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sajПравильно ли, есля я буду делать для каждого приизнака свою таблицу подстановки значения?
Cкорее всего, правильно.

sajНасколько такие огромные массивы могут повлиять в последующем на быстродействие базы?
В принципе, конечно, если очень постараться, на любой базе можно добиться отвратительного быстродействия, но во-первых, здесь нет огромных массивов, во-вторых, вряд ли это хоть как-то повлияет на быстродействие, и наконец, благодаря специфике предметной области, я так думаю, объем данных, способный реально тормозить на относительно современном железе, вы наберете очень и очень нескоро.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильный подход к созданию базы. НУЖЕН СОВЕТ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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