poniedziałek, 8 listopada 2010

Kurs Oracle SQL. Więzy integralności

Dzięki więzom integralności nie można tak zmodyfikować danych by straciły on spójność. Są zbiorem zasad nałożonych na tabele w bazie danych.

Primary Key


Zapewnia unikalność wartości w kolumnie. Najczęściej zakładany jest na kolumnę która przechowuje dane jednoznacznie określające pojedynczy wiersz. W tabeli może być tylko jeden klucz główny. Zapewnia nie występowanie wartości NULL.


Unique

Zapewnia unikalność wartości w kolumnie, jednak w przeciwieństwie do PRIMARY KEY takich kluczy może być więcej niż jeden, oraz umożliwia występowanie wartości NULL.

NOT NULL

Zapobiega wstawianiu wartości NULL do kolumny.


Check

Zapewnia że wartość wstawiana do kolumny spełnia wymagany warunek logiczny. Nie można w nim wykorzystywać odwołań do innych tabel, funkcji agregujących, SYSDATE.

Foreign key

Jest to klucz obcy. Służy do definiowania relacji pomiędzy tabelami. Zapewnia że rekord w tabeli podrzędnej zawsze będzie miał swojego odpowiednika w tabeli nadrzędnej. Klucz obcy musi się odwoływać do kolumny (kolumn) w tabeli nadrzędnej, na których założony jest UNIQUE lub klucz główny.



Zakładanie konstraintów

Więzy możemy zakładać na dwa sposoby. Przy tworzeniu tabeli, oraz nakładając je na już istniejącą tabelę. Poniżej przykład zakładania więzów już przy tworzeniu tabeli:


Przykład zakładania konstraintów na istniejącej tabeli:




Wyjątek od reguły stanowi NOT NULL. Własność NULL/NOT NULL ustawiamy poprzez zmianę stanu:



Włączanie i wyłączanie konstraintów

Konstrainty możemy włączyć lub wyłączyć. Możliwość ta staje się przydatna gdy chcemy wykonać czynność którą uniemożliwiłby nam założony constraint. Przykładowo zdejmujemy klucz obcy (FOREIGN KEY) z tabeli jeśli uzupełniamy ją danymi które nie mają swoich odpowiedników w tabeli nadrzędnej.
 



Możemy po wykonaniu zaplanowanych czynności włączyć konstraint, pod warunkiem że jego warunek zostanie spełniony (np. uzupełnimy wpisy w tabeli nadrzędnej w przypadku FOREIGN KEY)
Możemy również włączyć konstraint bez walidacji istniejących danych. Konstraint będzie w takim wypadku obowiązywał tylko dla danych wprowadzonych później:



 

Usuwanie konstraintów

Aby zdjąć z tabeli konstraint musimy skorzystać z polecenia drop podając nazwę klucza.
Poniżej usuwam wszystkie konstrainty z tabeli pilkarze.




 





Ten temat omawiam na poniższych szkoleniach:
• Podstawy Oracle SQL
• Podstawy SQL i PL/SQL
Możesz w nich uczestniczyć, a jako czytelnik tego bloga otrzymasz 10% zniżki - poinformuj o tym fakcie konsultanta.

6 komentarzy:

  1. Drogi autorze, czy można prosic o zamianę "konstraintów" na "więzy"? ;-)

    OdpowiedzUsuń
    Odpowiedzi
    1. Ten komentarz został usunięty przez autora.

      Usuń
    2. dedykujkę autorowi powy zszego wpisu:
      „Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów.”
      Stanisław Lem

      pzdr dla autora kursu. dobra robota

      Usuń
    3. Meczacy sa Ci psuedopolonisci. Polski jezyk i tak ma wiekszosc slow przeciazonych. Więzy to sa na rekach, szyji albo kobieta Cie oplata nogami - to masz wiezy...
      "konstraint" - wchodzi nowe slowko, znieksztalcone i dziwne - owszem. Ale nowe - bo znaczy cos nowego. Dzieki takim zabiegom jednomyslnie wiemy ze nie chodzi o wiezy na szyji tylko o ograniczenia tabel

      Usuń
  2. Jeśli już, to nie więzy, co ograniczenia ;-)

    OdpowiedzUsuń
  3. Cześć
    Mam problem. Przy zakładaniu warunku wywala błąd:
    [42000][2270] ORA-02270: no matching unique or primary key for this column-list.
    Nie mogę dojść o co chodzi, proszę o pomoc.

    OdpowiedzUsuń