Etap II Należy utworzyć kod języka SQL w dialekcie Oracle

Transkrypt

Etap II Należy utworzyć kod języka SQL w dialekcie Oracle
Etap II
Należy utworzyć kod języka SQL w dialekcie Oracle implementujący zatwierdzony przez
prowadzącego rysunek oddany podczas etapu 2.
Dla każdej warstwy musi zostać utworzona odpowiednia tabela wyróżnień. Nazwy tabel nie mogą
przekraczać 30 znaków, nie mogą zawierać kropek, myślników, ukośników, spacji, polskich
znaków, itp. Następnie muszą zostać podane instrukcje typu INSERT oraz instrukcja rejestrująca
warstwę, instrukcje sprawdzające poprawność geometrii oraz instrukcja tworząca indeks
przestrzenny.
Zatem dla każdej warstwy po kolei w skrypcie powinno się znaleźć
• odpowiednie polecenie CREATE,
• odpowiednie polecenia INSERT
• polecenie typu INSERT INTO USER_SDO_GEOM_METADATA... rejestrujące warstwę
• polecenie COMMIT;
• polecenie sprawdzające poprawność geometrii za pomocą metody ST_IsValid
• polecenie sprawdzające poprawność geometrii za pomocą podprogramu
SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT,
• polecenie zakładające indeks przestrzenny dla poszczególnych kolumn przechowujących
geometrie
• polecenie wybierające wszystkie kolumny i wszystkie wiersze z danej warstwy (SELECT *
FROM nazwa_tabeli;)
Nazwy indeksów również nie mogą przekroczyć 30 znaków.
Geometrie wstawiamy poprzez użycie odpowiednich konstruktorów dla typu SDO_GEOMETRY,
a nie za pomocą WKT.
Każdą warstwę dobrze sobie zwizualizować, aby sprawdzić, czy baza faktycznie odzwierciedla
rysunek. Może być tak, że geometrie są poprawne, ale nie takiego kształtu jak na rysunku lub
odwrotnie, że wizualizacja w SQL Developerze wygląda dobrze, a geometrie poprawne nie są.
W SQL Developerze może być problem z wyświetleniem punktów lub geometrii, które według
aplikacji leżą na brzegu rysunku (może nie być ich widać).
W linijce przed każdym kolejnym poleceniu INSERT prosiłabym o zaznaczenie w komentarzu
(zaczynającym się od -- lub mieszczącym się między znakami /* i */) informacji czy geometria jest
poprawna, tzn. czy metoda ST_IsValid zwróciła 1). Można oczywiście przesłać kod, w którym będą
się zdarzały błędne geometrie, tzn. takie, z którymi nie mogą sobie Państwo poradzić (nie wiadomo
gdzie jest błąd składniowy lub wizualizacja nie zgadza się z rysunkiem i nie można znaleźć powodu
tej różnicy, itd.). Te komentarze pomogą mi w sprawdzaniu (tzn. ja i tak sprawdzam każde
polecenie, ale jeśli zaznaczą Państwo te, które są błędne, to nie będę wykonywała skryptu jako
całości, a potem usuwała błędnych indeksów, itd. tylko będę wykonywała je linia po linii).
Na końcu skryptu, w komentarzu (czyli między znakami /* i */) umieszczamy polecenia kasujące
wszystkie warstwy (czyli polecenia DROP TABLE nazwa_tabeli;, kolejno dla wszystkich tabel
z projektu)
oraz
polecenie
usuwające
wszystkie
wiersze
z
widoku
USER_SDO_GEO_METADATA, czyli DELETE FROM USER_SDO_GEOM_METADATA;).
Kod należy przesłać prowadzącemu oraz przynieść na zajęcia w postaci elektronicznej.
W nazwach przesyłanych skryptów musi się znaleźć Państwa nazwisko i numer wersji (tzn. za
pierwszym razem 1, a przy ewentualnych kolejnych poprawkach kolejne numery, aby było
wiadomo, która wersja jest która). Jeśli poprawiają Państwo skrypt po moich uwagach, to należy
przesłać cały kod (nie tylko poprawione części), a także zaznaczyć poprawiane instrukcje (poprzez
poprzedzenie ich komentarzem tak, aby łatwiej było je znaleźć).