powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Зло нормализации
27 сообщений из 27, показаны все 2 страниц
Зло нормализации
    #38637103
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К примеру, имеем документ. Но сам документ не содержит никаких данных, а тоьлко ссылки (много). Его отпечатали, проплатили, положили в шкаф. После этого изменять документ нельзя. И на это есть логика в базе в таблице документов. Тем не менее можно изменить все в подиченных таблицах, на которые ссылается этот документ. И если это случается то меняется и сам документ, при его открытии или печати данные будут другими.

как бороться
...
Рейтинг: 0 / 0
Зло нормализации
    #38637115
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> как бороться

Учиться проектировать базы данных.
...
Рейтинг: 0 / 0
Зло нормализации
    #38637118
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterЕго отпечатали, проплатили, положили в шкаф.

и положили в заблокированную автономную таблицу готовых документов, где вместо ссылок реальные значения из подчиненных таблиц у каждого документа. В этом случае можно удалить вообще все подчиненные таблицы, а документы останутся в неизменном виде... ну да, избыточность, а что делать... ну пусть автономная таблица будет в отдельной БД для удобства использования и контроля....
...
Рейтинг: 0 / 0
Зло нормализации
    #38637131
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,


Учиться проектировать базы данных.

Это грубовато, но в целом верно :)

Что Вы хотите от системы - чтобы при изменениях в "подчиненных" (а на самом деле, наоборот, родительских) таблицах в документе оставались старые значения? Тогда надо прикручивать хранение истории для этих родительских таблиц - чтобы ссылки документа указывали не на актуальные на текущий момент записи таблиц, а на записи, бывшие актуальными в момент фиксации документа.
...
Рейтинг: 0 / 0
Зло нормализации
    #38637135
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

Или как Кот матроскин предложил тоже покатит на ура (повторить фрагмент схемы БД Документ + Родительские таблицы) и кидать туда окончательный вариант документа и параметров, будет сложнее реализовать, но избыточности меньше
...
Рейтинг: 0 / 0
Зло нормализации
    #38637141
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин,

при хранении истории не возможно использовать уникальные ключи в родителях (ака AK), что не есть гут.

guest_20040621,

Проектировал не я:) По делу есть что-то?

vmag,

Тут вообще весело будет, если в таблице одно, а в документе другое. Будут круглые глаза и вопросы "откуда оно там взялось?"
...
Рейтинг: 0 / 0
Зло нормализации
    #38637146
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем склоняюсь к мысли создать XML колонку в таблице доументов и сохранять документ там в момент его генерации, как xml со всеми данными. Благо Оракел такое позволяет. Остается вопрос про FK документа. На фига они нужны и на что они ссылаются?
...
Рейтинг: 0 / 0
Зло нормализации
    #38637150
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или вообще перейти на документo-ориентированные ДБ, типо Монго. Вижу тенденция к тому :) Вот тебе и "учится проектировать БД". То, что мы учили придется забыть.
...
Рейтинг: 0 / 0
Зло нормализации
    #38637151
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterКот Матроскин,
При хранении истории не возможно использовать уникальные ключи в родителях (ака AK), что не есть гут.

Что значит "не возможно использовать уникальные ключи" - а какие возможно использовать, неуникальные? :)
Разумеется, ключ таблицы (даже в случае хранения истории в той же таблице, что и актуальные значения, что, вообще говоря, необязательно) будет уникальным, просто сама таблица будет устроена чуть сложнее
...
Рейтинг: 0 / 0
Зло нормализации
    #38637153
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterТут вообще весело будет, если в таблице одно, а в документе другое. Будут круглые глаза и вопросы "откуда оно там взялось?"

Не в этом беда и это не то, о чем вы просили... в автономной таблице документ и подписанный в сейфе документ будут одинаковыми , именно об этом вы просили, а дальше смотрите кто когда и что вносил по логам в параметры после даты консервации документа....

Relic HunterИ если это случается то меняется и сам документ, при его открытии или печати данные будут другими.

как бороться
...
Рейтинг: 0 / 0
Зло нормализации
    #38637157
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterВ общем склоняюсь к мысли создать XML колонку в таблице доументов и сохранять документ там в момент его генерации, как xml со всеми данными

И чем по логике и назначению то что выше отличается от того что ниже


vmagи положили в заблокированную автономную таблицу готовых документов, где вместо ссылок реальные значения из подчиненных таблиц у каждого документа.

Хочется освоить XML ??? Ну, тоже тема...
...
Рейтинг: 0 / 0
Зло нормализации
    #38637159
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинЧто значит "не возможно использовать уникальные ключи" - а какие возможно использовать, неуникальные? :)
Разумеется, ключ таблицы (даже в случае хранения истории в той же таблице, что и актуальные значения, что, вообще говоря, необязательно) будет уникальным, просто сама таблица будет устроена чуть сложнееНу как? Есть в таблице PK (сурогат) и АК (код клиента). Оба уникальны. Если хранить историю тут-же, то с АК уникальность придется снять. Если историю вынести в отдельную, этож как нужно будет переделать модель и прикладнуху....
...
Рейтинг: 0 / 0
Зло нормализации
    #38637160
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> И чем по логике и назначению то что выше отличается от того что ниже

Тоже костыль, но не такой массивный :)

>> Хочется освоить XML ??? Ну, тоже тема...

Все уже давно освоено.
...
Рейтинг: 0 / 0
Зло нормализации
    #38637168
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterТоже костыль, но не такой массивный :)

- а на сколько не такой массивный? И в какую сторону?
- ведь вся полная текстовая информация по документу и там и там практически одинаковая,
только в таблице не будет кучи тэгов и разметки которые есть в XML
которые тоже нужно хранить...
...
Рейтинг: 0 / 0
Зло нормализации
    #38637174
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag- а на сколько не такой массивный? И в какую сторону?
- ведь вся полная текстовая информация по документу и там и там практически одинаковая,
только в таблице не будет кучи тэгов и разметки которые есть в XML
которые тоже нужно хранить...Над собой смеетесь:) Документ может состоять из 5, 6-ти и даже более подчиненных таблиц -деталей. Я могу это дело загнать в одно XML поле в мастере. Теперь раскажите нам как будет удобно построить "актуальных" таблицы для всех этих деталей?
...
Рейтинг: 0 / 0
Зло нормализации
    #38637185
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вам же сказали, Relic Hunter: учиться проектировать. У любой сущности есть жизненный цикл. Любое подмножество экземпляров сущностей включает значение временной метки. Любая сущность идентифицируется суррогатными ключами. Этого достаточно, чтобы построить логически корректную модель. Берёте карандаш и рисуете зависимости. Отсюда, кстати, просто рисуется и модель регистрации изменений.
...
Рейтинг: 0 / 0
Зло нормализации
    #38637186
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterК примеру, имеем документ. Но сам документ не содержит никаких данных, а тоьлко ссылки (много). Его отпечатали, проплатили, положили в шкаф

Ух ты... Уже что переключились на другую тему или как?
Или идет конкретизация постановки задачи?
А для того что выше решение такое:
Был документ:
- ссылка 1
- ссылка 2
- ссылка 3
- ............
В архив попал после подписи документ:
- реальное значение 1
- реальное значение 2
- реальное значение 3
- ............
...
Рейтинг: 0 / 0
Зло нормализации
    #38637194
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Вам же сказали, Relic Hunter: учиться проектировать. У любой сущности есть жизненный цикл. Любое подмножество экземпляров сущностей включает значение временной метки. Любая сущность идентифицируется суррогатными ключами. Этого достаточно, чтобы построить логически корректную модель. Берёте карандаш и рисуете зависимости. Отсюда, кстати, просто рисуется и модель регистрации изменений.Там свои проблемы. Как обеспечить не пересечение временных интервалов на уровне таблицы? Если есть "начало" и "конец". Как обеспечить не обязательное значениe (null) поля "конец" только для одной! строки на уровне таблицы?
...
Рейтинг: 0 / 0
Зло нормализации
    #38637198
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реляционными методами такие проблемы не решаются.
...
Рейтинг: 0 / 0
Зло нормализации
    #38637199
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
придется прямой доступ к таблицам закрыть и писать свой АПИ (процедуры) для доступа к данным.
...
Рейтинг: 0 / 0
Зло нормализации
    #38637205
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Там свои проблемы.

"Там" нет никаких "своих проблем". Тупо реляционная структура.

Проблемы есть при регистрации связанных изменений. Но вас пока это не должно беспокоить.
...
Рейтинг: 0 / 0
Зло нормализации
    #38637372
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterКак обеспечить не пересечение временных интервалов на уровне таблицы? Если есть "начало" и "конец". Как обеспечить не обязательное значениe (null) поля "конец" только для одной! строки на уровне таблицы? Реляционными методами такие проблемы не решаются.
Какие-то у вас убогие реляционные средства. О! Кстати! Блин! Наконец-то я нашёл применение для mssql-ного unique constraint
...
Рейтинг: 0 / 0
Зло нормализации
    #38637373
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterНу как? Есть в таблице PK (сурогат) и АК (код клиента).
А зачем Вам уникальное поле код клиента - чтобы нельзя было вставить второго клиента с тем же кодом? Ну так это решается уникальностью сочетания полей - например, КодКлиента + ДатаОкончания актуальности.

vmag повторить фрагмент схемы БД Документ + Родительские таблицы) и кидать туда окончательный вариант документа и параметров
Я, кстати, предлагал совсем не это ;)
...
Рейтинг: 0 / 0
Зло нормализации
    #38637383
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинЯ, кстати, предлагал совсем не это ;)

Да какая разница, смысл то в том, что нужно после подписания договора фиксировать состояние этого договора, чтобы оно где то хранилось в неизменном электронном виде для просмотра, дабы не лазить лишний раз в сейф, по этому вытекает, что должна быть архивная часть для хранения окончательных документов, а все остальные действия ведут к парадоксу типа: с девушкой никто не занимается сексом потому, что прыщики на попе, а прыщики на попе потому, что с девушкой никто не занимается сексом...
...
Рейтинг: 0 / 0
Зло нормализации
    #38637448
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagКот МатроскинЯ, кстати, предлагал совсем не это ;)

Да какая разница
разница существенная
1. Сохраняется состояние не для каждого документа (100 раз в день одно и то же), а тогда, когда одна из сущностей, на которые ссылается документ, меняется
2. История изменений позволяет решать и другие задачи, кроме сохранения неизменного состояния проведенных документов.
...
Рейтинг: 0 / 0
Зло нормализации
    #38637505
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин1. Сохраняется состояние не для каждого документа (100 раз в день одно и то же), а тогда, когда одна из сущностей, на которые ссылается документ, меняется
2. История изменений позволяет решать и другие задачи, кроме сохранения неизменного состояния проведенных документов.Ну вобщем, так и делаем. Ведем историю изменений в таблицах. Не идеально, много проблем с данными, о которых я упомянул выше. Пользовательский интерфейс еще тот, сложный и размытый в связи с этим. В общем, не доволен.
...
Рейтинг: 0 / 0
Зло нормализации
    #38637611
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter Пользовательский интерфейс еще тот, сложный и размытый в связи с этим. В общем, не доволен.
Ну пользовательский интерфейс-то тут при чем? Если пользовательский интерфейс диктует схему данных, а схема данных - пользовательский интерфейс, скорее всего, и то и другое, ээ, оставляет желать лучшего.
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Зло нормализации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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