Sprawdzanie obecności rekordów w innych tabelach |
Sprawdzanie obecności rekordów w innych tabelach |
6.04.2013, 21:22:55
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 6.04.2013 Ostrzeżenie: (0%) |
Witam
Mój pierwszy post, mam nadzieje pomagać w przyszłości innym użytkownikom. Ale do rzeczy. Mam takie o to tabele: CREATE TABLE "Administrator" ( id_wpisu bigint NOT NULL, --identyfikator wpisu id_poz bigint NOT NULL, --Klucz obcy. Identyfikator poziomu dostepu wersja bigint NOT NULL --Numer wersji ); CREATE TABLE "Poziomy_dostepu" ( id bigint NOT NULL, --identyfikator poziomu nazwa character varying(20) NOT NULL, --Nazwa poziomu konto_id bigint NOT NULL, --Klucz obcy. Identyfikator konta czy_aktywne boolean DEFAULT false NOT NULL, --Status aktywnosci poziomu dla danego konta, domyślnie nieaktywne wersja bigint NOT NULL --numer wersji ); CREATE TABLE "Zatwierdzajacy" ( id_wpisu bigint NOT NULL, --identyfikator wpisu id_poz bigint NOT NULL, --Klucz obcy. Identyfikator poziomu dostepu wersja bigint NOT NULL --Numer wersji ); CREATE TABLE "Zlecajacy" ( id_wpisu bigint NOT NULL, --identyfikator wpisu id_poz bigint NOT NULL, --Klucz obcy. Identyfikator poziomu dostepu wersja bigint NOT NULL --Numer wersji ); Poziom id jest powiązany z kontem i chciałbym zrobić takie ograniczenie, że jeden poziom_id nie może być jednocześnie w dwóch tabelach. Chodzi o to, że mamy np. id_poz 1,2,3,4 itd. i nie może być sytuacji, kiedy w tabeli np. zlecajacy i zatwierdzajacy jest wpis zawierajacy ten sam id_poz. Niestety najwieksza bolączka, nie mogę posłużyć się triggerami (takie wymagania). Czy ktoś mógłby mnie naprowadzić? Pozdrawiam |
|
|
9.05.2013, 12:30:18
Post
#2
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) |
proponuje normalizacje.
masz 3 tabele ktore maja dokladnie te same pola, sluza do przechowywania tego samego róznica polega tylko na roli zrób tablele "Poziomy_dostepu" oraz
dodaj klucz na id_poz oraz id_roli, to załatwi sprawe unikalności. j. |
|
|
Wersja Lo-Fi | Aktualny czas: 20.06.2024 - 00:32 |