Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
 Распределение данных по таблицам  [new]
Sergey-2008
Member

Откуда:
Сообщений: 146
Доброе время суток форумчане,
Вот есть такая таблица 1 (см. рис.), в которой указан прибор и финансы которые на этот прибор тратятся.
Чтоб выдать отчет, по таблице 1, пользователь должен сначала приборы сгруппировать в акты (тогда приборы определенной группы, попадают в определенный акт).
Выделенияе приборов в акты, происходит в этом же окне/таблице, в особом режиме (каждому назначается группа), начиная с №1, далее по каждой группе расчитываются финансы (указанные в таблице).

По хорошему для финансов, нужно создавать отдельную (дополнительную) таблицу 2 на несколько полей, и их связывать (многие к одному). Сейчас у меня отображаются финансы для одной группы в какой-нибудь строке устройства данной группы – это не совсем наверное правильно (и все это в одной таблице).

Если я создам такую дополнительную таблицу, то это нужно писать больше кода (больше проверок).
Например при создании новой группы: пользователь выделяет устройства для группы, при окончании выделения, я расчитываю финансы, потом должен добавить строку в таблицу 2, взять id новой строки, потом присвоить это id в таблице 1 всем устройствам из этой группы.
Или например когда ВСЕ устройства из одной группы например №1 перейдут в группу №4, тогда строку в таблице 2, с группой №1 нужно удалить, а в группе №4, конечно изменятся значения финансов. И т.д.

Проще конечно было бы (обойтись без таблицы 2) и одним update заменять финансы у всех устройств в таблице и отображать их во всех строках.

Как вы думаете как лучше поступить?

Заранее спасибо за ответ

К сообщению приложен файл. Размер - 7Kb
25 фев 19, 17:30    [21818985]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных по таблицам  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 780
Sergey-2008,

ИМХО нужно делать естественным образом. Искусственно созданные понятия, объекты порождают проблемы. Можете объяснить, что такое акт, какая его связь с группой и датой закрытия? Вообще акты хранятся в базе?
25 фев 19, 18:01    [21819020]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных по таблицам  [new]
Sergey-2008
Member

Откуда:
Сообщений: 146
KreatorXXI,

- "Акт" - документ по группе устройств (туда входит название устройства, финансы по нему и т.д.), которые выводятся в word (по нажатию кнопки)
- "Дата закрытия" - дата закрытия акта, просто дата (т.е. она принадлежит всей группе, т.к. акт составляется на группу)
- сами акты не хранятся в БД, в БД хрананятся только данные для них (в таблице)
25 фев 19, 18:43    [21819054]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных по таблицам  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
Sergey-2008, смотрю на картинку и понимаю, что конечно неправильно отчёт составлен. В группе 1 два прибора, но дата закрытия и финансы указаны только у одного.... Причём у разных. Сначала и не поймёшь что тут написано
Однозначно требуется выводить дату закрытия и финансы одной строкой. Дополнительной, расположенной ниже всех приборов, входящих в акт. Зачем тут использовать какие-то дополнительные таблицы непонятно.
Тут требуется изменить форму отображения отчёта, но никак не структуру БД
26 фев 19, 07:33    [21819300]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных по таблицам  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
Mr.Fontaine
Sergey-2008, смотрю на картинку и понимаю, что конечно неправильно отчёт составлен. В группе 1 два прибора, но дата закрытия и финансы указаны только у одного.... Причём у разных. Сначала и не поймёшь что тут написано
Однозначно требуется выводить дату закрытия и финансы одной строкой. Дополнительной, расположенной ниже всех приборов, входящих в акт группу. и так по каждой группе, где есть закрытые акты. Зачем тут использовать какие-то дополнительные таблицы непонятно.
Тут требуется изменить форму отображения отчёта, но никак не структуру БД

Сначала не то немного написал. Малость подправил предыдущий текст
26 фев 19, 07:34    [21819301]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных по таблицам  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 780
Я бы тогда хранил либо акты, либо группы хотя бы. А так не понятно. В разных группах могут быть одинаковые приборы? Во-вторых, если не хранить акты, как потом разбираться? Поднимать вордовские документы? Странная автоматизация.
26 фев 19, 10:39    [21819430]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных по таблицам  [new]
Sergey-2008
Member

Откуда:
Сообщений: 146
Еще раз спасибо за ответы.

Я разобрался. Дополнительную таблицу - откидываю, будет сложнее реализация.
Все буду хранить в одной таблице "tabl1".
В табл. на рис. для гурппы №1, все считается правильно, только выводится в разных строках. Я писал, что отображение сейчас корявое в том плане, что расчеты финансов и "даты закрытия" (для всей группы) отображаются в одной из строк группы. я намерен их отображать во всех строках группы. Хоть это будут одинаковые значения (во всех строках для одной группы), но нисего не поделаешь.

тут к этому же вопрос:
когда я заполняю в таблице "tabl1" данные: "дата закрытия" и финансы - я заполняю одну из строк группы,
вопрос:
можно ли написать триггер на эту же "tabl1" "AFTER UPDATE", чтоб он (на основании ввседенных данных "дата закрытия" и финансы) дозаполнял этими же данными ("дата закрытия" и финансы) остальные строки группы?

по сути это получается безконечный цикл.
26 фев 19, 18:46    [21820025]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных по таблицам  [new]
SERG1257
Member

Откуда:
Сообщений: 2663
Sergey-2008
Дополнительную таблицу - откидываю, будет сложнее реализация.
Дополнительная таблица для актов называется нормализация, откидывая ее вы попадаете на нарушение нормальной формы.
Ваша возня с триггерами это и есть последствия нарушения нормальной формы.
26 фев 19, 19:06    [21820032]     Ответить | Цитировать Сообщить модератору
Все форумы / Проектирование БД Ответить