Есть ли критерии связанных таблиц?

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

Ответить
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Есть ли критерии связанных таблиц?

Сообщение Max_Ural »

От заказчика поступил следующий вопрос:
  • Можно ли получить информацию о критериях связности таблиц для того, чтобы время от времени проверять их (связей) целостность?

    Поясню на примере, для чего это нам понадобилось...

    В SpSopHoz обнаружено примерно 10% от общего числа записей, отвязанных от Soprhoz. Данная информация получена путем выполнения простенького запроса:

    Код: Выделить всё

    Select SpSopHoz.*
      Where
      (( 
        SpSopHoz.cSoprHoz == SoprHoz.NRec 
      ))
      and not IsValidAll(tnSoprHoz)
      order by SpSopHoz.cSoprHoz;
    
    Эти отвязанные записи показываются в хозоперациях в интерфейсе распределения платежа (нижняя панель), не удаляются в интерфейсе и препятствуют распределению платежа!

    Выискивать их в таблице SpSopHoz фактически можно только по сумме, либо нужно строить более сложные запросы с привлечением информации из KatSopr и пр.

    Посему и возникает вопрос: есть ли информация о связности таблиц - критерии? И можно ли ее получить?

    Ну, или (на худой конец) нельзя ли получить ответ на вопрос: приведенный выше запрос можно считать критерием связности этих двух таблиц?
    Иными словами, можно ли удалить выбранные таким образом записи, не опасаясь удалить нужную информацию?
Gera
топ-софт
Сообщения: 97
Зарегистрирован: Пн, 24/09/2007 17:53
Имя Фамилия: Юрий Герман
Откуда: ТопСофт
Контактная информация:

Сообщение Gera »

Проверка целостности должна производиться встроенными средствами проверки:
  • модуль Настройка
    пункты меню Администратор - Проверка целостности таблиц - ...
Для указанного примера:
1. Если распределение не работает - обращайтесь в техподдержку для регистрации инцидента
2. Не факт, что SpSopHoz должен всегда ссылаться на SoprHoz, так что приведенный критерий использовать нельзя
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Сообщение Max_Ural »

Все-таки остался следующий вопрос:

Каким штатным средством я могу «выловить» и удалить зависшую ссылку: запись SpSopHoz, имеющую ссылку на несуществующую запись SoprHoz?

У меня есть предположение насчет Контроля целостности таблиц КБУ.
В нем есть следующие настройки:
При проверке удалять отвязанные записи в журнале хозопераций (и в журнале платежей)
И проверять синхронизацию журнала хозопераций и платежей

Хватит ли этих проверок, чтобы убедиться в корректности всей таблицы SpSopHoz?
Аватара пользователя
larin
топ-софт
Сообщения: 228
Зарегистрирован: Пн, 10/09/2007 12:13
Имя Фамилия: Михаил Ларин
Откуда: ТопCофт
Контактная информация:

Сообщение larin »

Если не критерии, то сами связи таблиц поможет выявить вот это: http://forum.galaktika.ru/viewtopic.php?t=523 ;-)
Garik
топ-софт
Сообщения: 2
Зарегистрирован: Пт, 25/04/2008 17:40
Имя Фамилия: Игорь Яковлев
Откуда: ТопСофт
Контактная информация:

Сообщение Garik »

Имеется служебный интерфейс, который производит анализ корректности записей таблицы SpSopHoz.

В меню его нет, поэтому для его вызова следует через меню "Сервис->Утилиты->Запуск внешнего интерфейса" запустить внешний интерфейс F_SOPRHOZ::RESCUE_DB3 (F_SoprHoz.res).

В данном интерфейсе после выполнения диагностики отображаются все отвязанные записи таблицы SpSopHoz, т.е. записи, которые ссылаются на несуществующий SoprHoz. Там же можно удалить эти отвязанные записи.
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Сообщение Max_Ural »

Игорь Яковлев, спасибо большое
Теперь с этой таблицей можно будет разобраться
Аватара пользователя
larin
топ-софт
Сообщения: 228
Зарегистрирован: Пн, 10/09/2007 12:13
Имя Фамилия: Михаил Ларин
Откуда: ТопCофт
Контактная информация:

Сообщение larin »

Хочу предостеречь!

Утилиты
F_SOPRHOZ::RESCUE_DB1
F_SOPRHOZ::RESCUE_DB2
F_SOPRHOZ::RESCUE_DB3
F_SOPRHOZ::RESCUE_DB4
используйте только на свой страх и риск.

Это экспериментальные, местами не доделанные, утилиты. Нет гарантии, что реализованные в них алгоритмы диагностики выдают верный диагноз.
Также нет гарантии, что реализованные в них алгоритмы исправления будут корректно чинить базу.

К оценкам, которые выдают эти утилиты, нужно относиться взвешенно.
Аватара пользователя
larin
топ-софт
Сообщения: 228
Зарегистрирован: Пн, 10/09/2007 12:13
Имя Фамилия: Михаил Ларин
Откуда: ТопCофт
Контактная информация:

Сообщение larin »

Не забудьте сделать резервную копию базы перед запуском этих утилит ;-)
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Сообщение Max_Ural »

Клиент спрашивает:
"Есть у Вас описание этих интерфейсов (имеется в виду интерфейс по таблице SPSOPHOZ F_SOPRHOZ::RESCUE_DB3)? Нельзя ли получить?"
Аватара пользователя
larin
топ-софт
Сообщения: 228
Зарегистрирован: Пн, 10/09/2007 12:13
Имя Фамилия: Михаил Ларин
Откуда: ТопCофт
Контактная информация:

Сообщение larin »

Отправил почтой.
Ответить