Связи таблиц справочника контактов

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Восстановление целостности данных справочника контактов)
 
(не показаны 4 промежуточные версии 1 участника)
Строка 1: Строка 1:
Связи между таблицами [[GD_CONTACT]], [[GD_PEOPLE]], [[GD_COMPANY]] и др.
+
Связи между таблицами [[GD_CONTACT]], [[GD_PEOPLE]], [[GD_COMPANY]], [[GD_COMPANYCODE]], [[GD_COMPANYACCOUNT]], [[GD_BANK]] и др.
  
 
http://gsbelarus.com/gs/images/gs/2007/wiki_contact_tables.png
 
http://gsbelarus.com/gs/images/gs/2007/wiki_contact_tables.png
 +
 +
====Восстановление целостности данных справочника контактов====
 +
 +
При работе с данными в базе напрямую (минуя бизнес-классы) возможно нарушение структуры справочника контактов. Например, в таблице [[GD_CONTACT]] присутствует запись с '''CONTACTTYPE = 3''', а в таблице [[GD_COMPANY]] связанная с ней запись отсутствует. Восстановить порядок можно поочередно выполнив следующие запросы:
 +
 +
1 -- восстанавливаем отсутствующие записи в таблице GD_COMPANY для организаций и банков:
 +
 +
  INSERT INTO gd_company (contactkey, fullname)
 +
  SELECT c.id, c.name
 +
  FROM gd_contact c LEFT JOIN gd_company co
 +
    ON c.id = co.contactkey
 +
  WHERE
 +
    c.contacttype IN (3, 5) AND co.contactkey IS NULL
 +
 +
2 -- восстанавливаем отсутствующие записи в GD_BANK для банков:
 +
 +
  INSERT INTO gd_bank (bankkey, bankcode)
 +
  SELECT c.id, c.id
 +
  FROM gd_contact c LEFT JOIN gd_bank b
 +
    ON c.id = b.bankkey
 +
  WHERE
 +
    c.contacttype = 5 AND b.bankkey IS NULL
 +
 +
3 -- восстанавливаем отсутствующие записи в GD_PEOPLE для физических лиц:
 +
 +
  INSERT INTO gd_people (contactkey, surname)
 +
  SELECT c.id, SUBSTRING(c.name FROM 1 FOR 20)
 +
  FROM gd_contact c LEFT JOIN gd_people p
 +
    ON c.id = p.contactkey
 +
  WHERE
 +
    c.contacttype = 2 AND p.contactkey IS NULL
 +
 +
После выполнения следует зайти в редактирование проблемных объектов и ввести/исправить недостающую информацию.
  
 
[[Category:База данных]]
 
[[Category:База данных]]

Текущая версия на 16:54, 4 октября 2012

Связи между таблицами GD_CONTACT, GD_PEOPLE, GD_COMPANY, GD_COMPANYCODE, GD_COMPANYACCOUNT, GD_BANK и др.

wiki_contact_tables.png

[править] Восстановление целостности данных справочника контактов

При работе с данными в базе напрямую (минуя бизнес-классы) возможно нарушение структуры справочника контактов. Например, в таблице GD_CONTACT присутствует запись с CONTACTTYPE = 3, а в таблице GD_COMPANY связанная с ней запись отсутствует. Восстановить порядок можно поочередно выполнив следующие запросы:

1 -- восстанавливаем отсутствующие записи в таблице GD_COMPANY для организаций и банков:

 INSERT INTO gd_company (contactkey, fullname)
 SELECT c.id, c.name
 FROM gd_contact c LEFT JOIN gd_company co
   ON c.id = co.contactkey
 WHERE
   c.contacttype IN (3, 5) AND co.contactkey IS NULL

2 -- восстанавливаем отсутствующие записи в GD_BANK для банков:

 INSERT INTO gd_bank (bankkey, bankcode)
 SELECT c.id, c.id
 FROM gd_contact c LEFT JOIN gd_bank b
   ON c.id = b.bankkey
 WHERE
   c.contacttype = 5 AND b.bankkey IS NULL

3 -- восстанавливаем отсутствующие записи в GD_PEOPLE для физических лиц:

 INSERT INTO gd_people (contactkey, surname)
 SELECT c.id, SUBSTRING(c.name FROM 1 FOR 20)
 FROM gd_contact c LEFT JOIN gd_people p
   ON c.id = p.contactkey
 WHERE
   c.contacttype = 2 AND p.contactkey IS NULL

После выполнения следует зайти в редактирование проблемных объектов и ввести/исправить недостающую информацию.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты