SQL Error L3020

Pracując ostatnio z MS SQL Server i Visio Enterprise Architect natrafiłem na błąd L3020.
Owy błąd SQL L3020 ma miejsce przy projektowaniu diagramu UML i ustawieniu dwóch kluczy obcych tabeli podrzędnej wskazujących na ten sam klucz główny w tabeli nadrzędnej.
Dokładna treść błędu to:

nazwa_diagramu.VSD : błąd L3020: XXXXX_FK1: Relacja klucza obcego obejmuje te same tabele nadrzędne i podrzędne co XXXXX_FK2, ale nie zawiera różnych fraz orzeczenia (zwykłych i odwrotnych).

Błąd ten oczywiście uniemożliwia nam wygenerowanie skryptu DLL, którego oczekujemy od Visio Enterprise Architecta. :)

Błąd SQL L3020 – istota

Głównym problemem dla samego SQLa jest odróżnienie obu relacji pomiędzy tabelą nadrzędną i podrzędną. Oczywiście nazwa fizyczna relacji jest różna. W definicji relacji w Visio wskazujemy na różne kolumny w tabeli podrzędnej. Więc o co chodzi?
A no chodzi o tzw. frazy orzeczenia (verb phrase i/lub reverse phrase). Znajdziemy je w kategorii ‘Nazwa’ w właściwościach konkretnej relacji na diagramie UML.
O ile w polskim nazewnictwie ciężko dojść o co chodzi, po angielsku jest to banalnie proste.
Standardowo jako reverse phrase (frazę odwrotną) mamy określenie ‘is of’.

Tak więc np.
FK1 stolica w tabeli Panstwa wskazuje na PK1 nazwa_miasta w tabeli Miasta.
Co za tym idzie:
PK1 encji miasta is of encji Panstwa.

By uniknąć problemów jak L3020, musimy to po prostu uściślić.

Rozwiązanie:

Co więc robimy?
Sprawiamy, że będziemy czytać relację jako:
PK1 encji miasta is stolica of encji Panstwa.

Proste prawda?
W polskiej wersji językowej, podobnie jak tutaj dodajemy nazwe kolumny w fazie odwrotnej zaraz po ‘z’, np.
z stolica
I uściślamy dla obu relacji (zamiast stolica wstawiamy nazwę kolumny tabeli podrzędnej konkretnej relacji).

One thought on “SQL Error L3020”

Leave a Reply

Your email address will not be published. Required fields are marked *