Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sprawdzanie obecności rekordów w innych tabelach
jiuji
post 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
Go to the top of the page
+Quote Post
alegorn
post 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

  1. CREATE TABLE "akcje" (
  2. id_wpisu bigint NOT NULL, --identyfikator wpisu
  3. id_poz bigint NOT NULL, --Klucz obcy. Identyfikator poziomu dostepu
  4. id_roli NOT NULL,
  5. wersja bigint NOT NULL --Numer wersji
  6. );
  7.  
  8. -- oraz
  9.  
  10. CREATE TABLE "role" (
  11. id_roli int NOT NULL, --identyfikator wpisu
  12. rola char(10)
  13. );


dodaj klucz na id_poz oraz id_roli, to załatwi sprawe unikalności.


j.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 11:03