Transformacja łuku z modelu ER do modelu relacyjnego

0

Witam !
Jako projekt uczelniany mam zaprojektować bazę danych do systemu obsługi parkometrów. Nie wchodząc aż tak bardzo w szczegóły, chciałem się zapytać, czy jest możliwe takie użycie łuków przy podtypach, jak w mojej sytuacji (odsyłam do załącznika, gdzie zamieściłem model ER i model relacyjny). Generalnie, prowadzący nie doszukał się w moim modelu błędu, ale przy generowaniu ddl w sqldeveloper wyskakuje mi błąd (dokładnie 2 razy ten sam) związany z łukiem dotyczący tabeli Zarejestrowany w modelu relacyjnym.

Dokładna treść błędu: -- ERROR: No Discriminator Column found in Arc Arc_1 - constraint trigger for Arc cannot be generated
-- ERROR: No Discriminator Column found in Arc Arc_1 - constraint trigger for Arc cannot be generated

Czy generalnie błąd już popełniłem przy projektowaniu ER, czy gdzieś przy ustalaniu opcji w sqldeveloper dotyczących generacji modelu relacyjnego. Z góry dziękuje za odpowiedź.

1

W modelu relacyjnym nie zostały dodefiniowane właściwości łuku. Ale w zasadzie już w modelu logicznym - np. encja źródłowa "Osoby" - skrót "Osb", i dwie wykluczające się encje "Trenerzy" - skrót "Trn", oraz "Zawodnicy" - skrót "Zwd") - w encji źródłowej "Osoby" (tej do której "wchodzą" dwa wykluczające związki od encji "Trenerzy" i "Zawodnicy") należy zdefiniować atrybut wykluczenia (discriminator), np. "Wykl", i utworzyć łuk. Następnie w wygenerowanym (w SDDM) modelu relacyjnym należy wywołać właściwości łuku. W zakładce "General" w polu "Discriminator column" wskazujemy kolumnę wykluczenia, czyli "Wykl", po czym w zakładce "Foreign Keys" dla każdego klucza obcego ponowne wskazujemy kolumnę wykluczenia oraz wartość wykluczenia, np. dla klucza obcego tabeli "Trn" może to być ciąg "trener", a dla encji "Zwd" może to być ciąg "zawodnik". Wygenerowany z tak dodefiniowanego modelu relacyjnego skrypt .ddl będzie zawierał odpowiedni wyzwalacz z taką m.in. instrukcją:
IF ( d IS NULL OR d <> 'zawodnik' ) THEN
raise_application_error(-20223,
'FK Zwd_Osb_FK in Table Zwd violates Arc constraint on Table Osb - discriminator column Wykl doesn''t have value ''zawodnik''');
END IF;

1 użytkowników online, w tym zalogowanych: 0, gości: 1