|
Модераторы: LSD |
|
Рубильник |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 6.6.2016 Репутация: нет Всего: нет |
Пусть у нас есть большой проект. В этом проекте у нас много объектов. Поле одного объекта может ссылаться на другой объект.
Например, объект "Контракт" ссылается на объект "Контрагент". Есть связи между объектами. Иногда это явные связи, как в примере. Иногда они неявные, т.е. какое-то поле объекта заполняется по некоторому запросу, и в этом запросе происходит отбор по полям. В итоге результат запроса будет зависеть от других полей (которые подаются на запрос). Весь вопрос в целостности данных. Ведь, если изменяется (или удаляется) поле (или объект), то нужно что-то делать с зависимыми от него объектами. Или же, если за время заполнение электронной формы поменялось на сервере объект, от которого есть зависимые поля на этой форме (проблема синхронизации). Подозреваю, что имея карту зависимостей (какое поле какого объесть зависит от другого объекта и каким образом) можно в ряде случаев автоматически определять "Что делать?" Как вариант некоторые поля или объекта можно запретить для модификации. С другой стороны, если ни один Контракт не ссылается на этот конкретный Контрагент, то последний можно изменять или удалять без вреда для системы. Какое-то понимание проблемы у меня есть, явно я плаваю в теме. Хочется получить теоретические знания. Прошу помочь, так как не знаю куда копать. Интересует сама проблема сохранения целостности данных и все сопутствующие проблемы. |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 453 |
Поиск по термину "ER-модель" или "ER-диаграмма" даст достаточно информации, чтобы начать...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Рубильник |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 6.6.2016 Репутация: нет Всего: нет |
Спасибо и за это.
Что меня особенно интересует - классификация причин нарушения целостности. Например был разобран простой случай, когда разрушается ссылочная целостность. 1) при удалении объекта-родителя (потомку больше неначто ссылать) 2) при изменении объекта-потомка (на неправильную ссылку) 3) при создании объекта потом( с неправильной ссылкой) И как с этим бороться: 1) удалять все объекты-потомки для удаляемого класса 2) запрещать удалять объект-родитель 3) устанавливать в NULL ссылки для объектов-потомков 4) устанавливать в дефолтное значение ссылки для объектов-потомков. Пока моя главная проблема в то, что я не могу предсказать насколько фатальным будет нарушение целостности, и как это исправить. Часть проблем можно решить урезав функционал, часть проблем приводит к безобидным последствиям (и это можно игнорировать). Переходы по ссылкам "ER-модель" дают что-то поверхностное, и не позволяют мне получить представление о последствия. Мне кажется, что больше подойдет труд в техническом (логическом) ключе, например книга, в которой автор страдал этой темой, и пришел к ряду выводов, или стратегий как эти проблемы обойти. Возможно кто-то знает нужную мне книгу или статью. |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 453 |
Причин нарушения целостности всего две - ошибочный дизайн БД и нештатные ситуации с разрушением хранилища данных. А всё Вами перечисленное - это способы на практике нарушить целостность, когда дизайн БД ошибочен.
Методы борьбы тривиальны. Для первой причины это построение ситемы контроля целостности - индексы, констрейнты и внешние ключи. Для второй - дублированное хранилище (РАЙД, кластер), репликация и резервное копирование. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |