Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Карта зависимостей. Посоветуйте книгу


Автор: Рубильник 20.7.2018, 10:32
Пусть у нас есть большой проект. В этом проекте у нас много объектов. Поле одного объекта может ссылаться на другой объект.
Например, объект "Контракт" ссылается на объект "Контрагент".
Есть связи между объектами. Иногда это явные связи, как в примере. Иногда они неявные, т.е. какое-то поле объекта заполняется по некоторому запросу, и в этом запросе происходит отбор по полям. В итоге результат запроса будет зависеть от других полей (которые подаются на запрос).

Весь вопрос в целостности данных. Ведь, если изменяется (или удаляется) поле (или объект), то нужно что-то делать с зависимыми от него объектами.
Или же, если за время заполнение электронной формы поменялось на сервере объект, от которого есть зависимые поля на этой форме (проблема синхронизации).
Подозреваю, что имея карту зависимостей (какое поле какого объесть зависит от другого объекта и каким образом) можно в ряде случаев автоматически определять "Что делать?"
Как вариант некоторые поля или объекта можно запретить для модификации. С другой стороны, если ни один Контракт не ссылается на этот конкретный Контрагент, то последний можно изменять или удалять без вреда для системы.

Какое-то понимание проблемы у меня есть, явно я плаваю в теме. Хочется получить теоретические знания. Прошу помочь, так как не знаю куда копать. Интересует сама проблема сохранения целостности данных и все сопутствующие проблемы. 


Автор: Akina 20.7.2018, 11:38
Поиск по термину "ER-модель" или "ER-диаграмма" даст достаточно информации, чтобы начать...

Автор: Рубильник 20.7.2018, 12:35
Спасибо и за это.

Что меня особенно интересует -  классификация причин нарушения целостности. 
Например был разобран простой случай, когда разрушается ссылочная целостность.
1) при удалении объекта-родителя (потомку больше неначто ссылать)
2) при изменении объекта-потомка (на неправильную ссылку)
3) при создании объекта потом( с неправильной ссылкой)
И как с этим бороться:
1) удалять все объекты-потомки для удаляемого класса
2) запрещать удалять объект-родитель
3) устанавливать в NULL ссылки для объектов-потомков
4) устанавливать в дефолтное значение ссылки для объектов-потомков.

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

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

Автор: Akina 20.7.2018, 23:03
Причин нарушения целостности всего две - ошибочный дизайн БД и нештатные ситуации с разрушением хранилища данных. А всё Вами перечисленное - это способы на практике нарушить целостность, когда дизайн БД ошибочен.
Методы борьбы тривиальны. Для первой причины это построение ситемы контроля целостности - индексы, констрейнты и внешние ключи. Для второй - дублированное хранилище (РАЙД, кластер), репликация и резервное копирование.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)