Целостность данных защита мат. вьюхой и уник. индексом

AlexGru
Дата: 14.03.2011 11:44:44
Есть табличка с 3 полями. (эти без лишнего).

id_emp id_org snils

Нужно обеспечить, чтобы у одного человека в рамках всех организаций был одинаковый снислс.
Т.е.
Допускается
1 1 А
1 2 А

Но при существовании 2-х этих записей не допускается
1 3 Б

как вот можно сделать такое ограничение на уровне бд, чтобы пооптимальнее.

Наверное есть способ проще чем мат. вьюха
select id_emp,sum(distinct snils) as cnt

+ ограничение на cnt=1
-2-
Дата: 14.03.2011 11:48:50
AlexGru
чтобы у одного человека в рамках всех организаций был одинаковый снислс
человеки_мастертабля (человек primary key, снилс unique)
AlexGru
Дата: 14.03.2011 11:52:55
-2-,
человеки_мастертабля - это другая таблица родительская для данное.
В этой данные о человеке для разных организаций.

1 1 А
1 2 А

один человек разные организации.
onstat-
Дата: 14.03.2011 12:14:08
AlexGru
-2-,
человеки_мастертабля - это другая таблица родительская для данное.
В этой данные о человеке для разных организаций.

1 1 А
1 2 А

один человек разные организации.


Вам об этом вроде как и говорят, перенесите snils в человеки_мастертабля.
При наличии правильных констреинтов вставка ложной информации будет невозможна.
AlexGru
Дата: 14.03.2011 12:23:09
onstat-,
Спаисбо. Поразмыслили так и сделали.