Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Podobne dokumenty
Typy Oracle atrybutów relacji Typ NUMBER (1)

Typy Oracle atrybutów relacji Typ NUMBER (1)

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Bazy danych - Materiały do laboratoriów VIII

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Autor: Joanna Karwowska

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. zadania

Bazy danych Ćwiczenia projektowe

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Widok Connections po utworzeniu połączenia. Obszar roboczy

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Ćwiczenie 7 - DDL. Relacje i ograniczenia integralnościowe. Ćwiczenie 7 DDL. Wymagania: Bazy Danych

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Język SQL. Rozdział 8. Język manipulowania danymi DML

Bazy danych 6. Klucze obce. P. F. Góra

Wykład 4. SQL praca z tabelami 1

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Aspekty aktywne baz danych

Paweł Rajba

Wykład 8. SQL praca z tabelami 5

Wykład 2. SQL 1 Structured Query Lenguage

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

Bazy danych. Dr inż. Paweł Kasprowski

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Język SQL, zajęcia nr 1

Modelowanie wymiarów

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Optymalizacja poleceń SQL Indeksy

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Projektowanie systemów baz danych

Język SQL. Rozdział 2. Proste zapytania

SQL w praktyce. Miłej i owocnej nauki!!!

INDEKSY. Biologiczne Aplikacje Baz Danych. dr inż. Anna Leśniewska

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Bazy danych Ćwiczenia projektowe

Plan ćwiczenia. Rozdział 17 Zarządzanie współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

BAZY DANYCH. CREATE TABLE dbo.wydzialy (ID INT, Akronim VARCHAR(4) NOT NULL, Wydzial VARCHAR(30) NOT NULL, CONSTRAINT Kluczyk PRIMARY KEY(ID) )

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

Język SQL, zajęcia nr 2

Plan ćwiczenia. Rozdział 17. zarządzania współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

Tworzenie baz danych i tabel

Ref. 7 - Język SQL - polecenia DDL i DML

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

ACESS- zadania z wykorzystaniem poleceń SQL

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Administracja i programowanie pod Microsoft SQL Server 2000

Bazy danych. Polecenia SQL

Instrukcja CREATE TABLE

SIECI KOMPUTEROWE I BAZY DANYCH

1. Wyzwalacze BD (ang. triggers)

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Zarządzanie bazą danych za pomocą poleceń języka SQL*Plus

Przykładowa baza danych BIBLIOTEKA

Zarządzanie obiektami bazy danych Oracle11g

Uprawnienia, role, synonimy

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Tworzenie modelu logicznego i fizycznego danych.

Bazy danych i usługi sieciowe

Sprawdzone Niepotwierdzone

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Bazy Danych i Usługi Sieciowe

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Język zapytań SQL- język relacyjnych baz danych

Systemy GIS Tworzenie zapytań w bazach danych

"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz

Wykład 5. SQL praca z tabelami 2

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych Język SQL część 1 Wykład dla studentów matem

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

Transformacja modelu ER do modelu relacyjnego

Bazy danych Ćwiczenia projektowe

Oracle PL/SQL. Paweł Rajba.

Optymalizacja poleceń SQL Metody dostępu do danych

Bazy danych 9. Klucze obce Transakcje

1 DML - modyfikacja 1. 2 DDL - definicja struktur Definiowanie tabel Więzy integralności Modyfikacja definicji...

Rozdział 17. Zarządzanie współbieżnością zadania

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Transkrypt:

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Ograniczenia integralnościowe, modyfikowanie struktury relacji, zarządzanie ograniczeniami. 1

Ograniczenia integralnościowe Służą do weryfikacji poprawności danych relacji. Mogą być definiowane: dla atrybutu, dla relacji. Nazwa ograniczenia: może zostać jawnie zdefiniowana przez użytkownika w klauzuli CONSTRAINT, jest generowana automatycznie jeśli użytkownik nie zdefiniował jej jawnie. Moment weryfikacji danych przez ograniczenie: domyślnie: w momencie wykonania operacji modyfikującej/ wstawiającej/usuwającej dane, możliwość: w momencie zakończenia transakcji, w której miała miejsce operacja modyfikacji/wstawiania/usuwania danych. 2

Wymagalność wartości atrybutu Nie pozwala na umieszczenie w atrybucie wartości pustej. Miejsce definicji: dla atrybutu. Składnia: Dopuszczenie wartości pustej w atrybucie: pominięcie definicji ograniczenia lub jawne umieszczenie słowa NULL. Przykład: <nazwa_atrybutu> <typ_wartości> [CONSTRAINT <nazwa_ograniczenia>] NOT NULL -- wartości puste niedozwolone: nazwisko VARCHAR(15) CONSTRAINT nn_nazwisko NOT NULL, etat VARCHAR(10) NOT NULL, -- wartości puste dozwolone placa_pod NUMBER(6,2), placa_dod NUMBER(6,2) NULL, + 3

Klucz podstawowy (1) Atrybut lub zbiór atrybutów, których wartości jednoznacznie określają rekord w relacji. Nie dopuszcza wartości pustych. Tylko jeden klucz podstawowy w relacji. Miejsce definicji: dla atrybutu dla klucza założonego na jednym atrybucie, składnia: <nazwa_atrybutu> <typ_wartości> [CONSTRAINT <nazwa_ograniczenia>] PRIMARY KEY dla relacji zarówno dla klucza na jednym atrybucie jak i dla klucza na zbiorze atrybutów, składnia: [CONSTRAINT <nazwa_ograniczenia>] PRIMARY KEY (<lista_atrybutów>) 4

Klucz podstawowy (2) Przykład 1. Definicja klucza podstawowego z jednym atrybutem: dla atrybutu: id_prac NUMBER(6) CONSTRAINT pk_id_prac PRIMARY KEY,... dla relacji: + id_prac NUMBER(6), CONSTRAINT pk_id_prac PRIMARY KEY(id_prac), + 5

Klucz podstawowy (3) Przykład 2. Definicja klucza podstawowego z trzema atrybutami: tylko dla relacji: + imie VARCHAR(15), nazwisko VARCHAR(15), data_urodzenia DATE, CONSTRAINT pk_nazwisko_imie_data_ur PRIMARY KEY(nazwisko, imie, data_urodzenia), + 6

Klucz unikalny (1) Wymusza unikalność wartości atrybutu lub zbioru atrybutów w zbiorze rekordów relacji, pomija wartości puste. W relacji może być zdefiniowanych wiele kluczy unikalnych. Miejsce definicji: dla atrybutu dla klucza założonego na jednym atrybucie, składnia: <nazwa_atrybutu> <typ_wartości> [CONSTRAINT <nazwa_ograniczenia>] UNIQUE dla relacji zarówno dla klucza na jednym atrybucie jak i dla klucza na zbiorze atrybutów, składnia: [CONSTRAINT <nazwa_ograniczenia>] UNIQUE(<lista_atrybutów>) 7

Klucz unikalny (2) Przykład 1. Definicja klucza unikalnego z jednym atrybutem: dla atrybutu: nazwisko VARCHAR(15) CONSTRAINT uk_nazwisko UNIQUE,... dla relacji: + nazwisko VARCHAR(15), CONSTRAINT uk_nazwisko UNIQUE(nazwisko), + 8

Klucz unikalny (3) Przykład 2. Definicja klucza unikalnego z dwoma atrybutami: tylko dla relacji: + imie VARCHAR(15), nazwisko VARCHAR(15), CONSTRAINT uk_nazwisko_imie UNIQUE(nazwisko, imie), + 9

Klucz obcy (1) Definiuje zależność między relacjami: rekord w jednej relacji ( relacja podrzędna ) jest połączony ze wskazanym rekordem innej relacji ( relacja nadrzędna ), przykład: rekord opisujący pracownika (relacja PRACOWNICY) jest połączony z rekordem opisującym zespół, do którego pracownik należy (relacja ZESPOLY). Może istnieć klucz obcy, w którym relacja nadrzędna i relacja podrzędna to ta sama relacja: przykład: rekord opisujący pracownika (relacja PRACOWNICY) jest połączony z rekordem opisującym jego przełożonego (relacja PRACOWNICY). Alternatywna nazwa: ograniczenie referencyjne. Klucz obcy w relacji podrzędnej musi wskazywać na klucz podstawowy lub unikalny w relacji nadrzędnej. Klucz obcy dopuszcza wartości puste, chyba że zostaną wyeliminowane przez inne ograniczenie. 10

Klucz obcy (2) Miejsce definicji: dla atrybutu dla klucza założonego na jednym atrybucie, składnia: <nazwa_atrybutu> <typ_wartości> [CONSTRAINT <nazwa_ograniczenia>] REFERENCES <relacja_nadrzędna> (<nazwa_atrybutu_relacji_nadrzędnej>) dla relacji zarówno dla klucza na jednym atrybucie jak i dla klucza na zbiorze atrybutów, składnia: [CONSTRAINT <nazwa_ograniczenia>] FOREIGN KEY(<lista_atrybutów_relacji_podrzędnej>) REFERENCES <relacja_nadrzędna> (<lista_atrybutów_relacji_nadrzędnej>) 11

Klucz obcy (3) Przykład 1. Definicja klucza obcego z jednym atrybutem: dla atrybutu: id_zespolu NUMBER(4) CONSTRAINT fk_zespoly REFERENCES zespoly(id_zesp),... dla relacji: id_zespolu NUMBER(4), CONSTRAINT fk_zespoly FOREIGN KEY(id_zespolu) -- atrybut relacji podrzędnej REFERENCES zespoly(id_zesp),... 12

Klucz obcy (4) Przykład 2. Definicja klucza obcego z dwoma atrybutami, założenie: klucz podstawowy w relacji nadrzędnej POMIESZCZENIA składa się z dwóch atrybutów o nazwach: symbol_budynku i numer_pomieszczenia: tylko dla relacji: budynek CHAR(10), nr_pomieszczenia NUMBER(3), CONSTRAINT fk_pomieszczenia... FOREIGN KEY(budynek, numer_pomieszczenia) -- atrybuty w relacji podrzędnej REFERENCES pomieszczenia(symbol_budynku, numer_pomieszczenia), 13

Klucz obcy (5) Typ atrybutu w kluczu obcym musi być zgodny z typem atrybutu w kluczu podstawowym lub unikalnym, na który wskazuje klucz obcy; przykład: id_zespoludate CONSTRAINT fk_zespoly REFERENCES zespoly(id_zesp), -- Błąd: DATE nie jest zgodne z NUMBER(4) Można pominąć definicję typu dla atrybutu w kluczu obcym typ atrybutu zostanie ustawiony na identyczny z typem atrybutu w kluczu podstawowym lub unikalnym, z którym związany jest definiowany klucz obcy; przykład: id_zespolu CONSTRAINT fk_zespoly REFERENCES zespoly(id_zesp), atrybut id_zespolu uzyska typ NUMBER(4) identyczny z typem atrybutu id_zesp relacji ZESPOLY. 14

Usuwanie rekordu z relacji nadrzędnej (1) Domyślne działanie: jeśli dla usuwanego rekordu relacji nadrzędnej istnieją w relacji podrzędnej rekordy powiązane, operacja usunięcia zostaje odrzucona. Alternatywa 1.: jeśli dla usuwanego rekordu relacji nadrzędnej istnieją w relacji podrzędnej rekordy powiązane, usunięty zostaje rekord relacji nadrzędnej oraz powiązane z nim rekordy relacji podrzędnej tzw. usuwanie kaskadowe. implementacja: dodanie do ograniczenia klauzuli ON DELETE CASCADE. Alternatywa 2.: jeśli dla usuwanego rekordu relacji nadrzędnej istnieją w relacji podrzędnej rekordy powiązane, usunięty zostaje rekord relacji nadrzędnej a w powiązanych rekordach relacji podrzędnej atrybut (-y) klucza obcego uzyskuje wartość NULL. implementacja: dodanie do ograniczenia klauzuli ON DELETE SET NULL. 15

Usuwanie rekordu z relacji nadrzędnej (2) Przykład 1. Definicja klucza obcego z cechą usuwania kaskadowego: id_zesp NUMBER(4) CONSTRAINT fk_zespoly REFERENCES zespoly(id_zesp) ON DELETE CASCADE,... Przykład 2. Definicja klucza obcego z ustawianiem wartości pustych: budynek CHAR(10), nr_pomieszczenia NUMBER(3), CONSTRAINT fk_pomieszczenia FOREIGN KEY(budynek, nr_pomieszczenia) REFERENCES pomieszczenia(symbol_budynku, nr_pomieszczenia) ON DELETE SET NULL,... 16

Ograniczenie domeny atrybutu (1) Pozwala na definicję warunku logicznego, który musi być spełniony przez dane relacji. Warunek jest spełniony dla rekordu relacji, jeśli jego wartość jest równa TRUE (prawda) lub UNKNOWN (wartość nieznana, pusta). Warunek logiczny w ograniczeniu: nie może odwoływać do atrybutów innej relacji, nie może wykorzystywać zapytań, nie może wołać funkcji, zdefiniowanych przez użytkownika, dopuszczalne jest wołanie funkcji predefiniowanych. 17

Ograniczenie domeny atrybutu (2) Miejsce definicji: dla atrybutu warunek odwołuje się tylko do jednego atrybutu relacji, składnia: <nazwa_atrybutu> <typ_wartości> [CONSTRAINT <nazwa_ograniczenia>] CHECK(<warunek_logiczny>) dla relacji warunek odwołuje się do więcej niż jednego atrybutu relacji, składnia: [CONSTRAINT <nazwa_ograniczenia>] CHECK(<warunek_logiczny>) 18

Ograniczenie domeny atrybutu (3) Przykład 1. Warunek odwołujący się do jednego atrybutu: dla atrybutu: placa_pod NUMBER(6,2) CONSTRAINT chk_min_placa CHECK(placa_pod > 100),... dla relacji: placa_pod NUMBER(6,2), CONSTRAINT chk_min_placa CHECK(placa_pod > 100),... 19

Ograniczenie domeny atrybutu (4) Przykład 1. Warunek odwołujący się do dwóch atrybutów: tylko dla relacji: data_urodzenia DATE, data_zatrudnienia DATE, CONSTRAINT chk_daty CHECK(data_urodzenia < data_zatrudnienia),... 20

Łączenie ograniczeń integralnościowych Atrybut może mieć zdefiniowanych wiele ograniczeń integralnościowych. Łączenie dotyczy tylko ograniczeń dla atrybutu. Kolejne ograniczenia wymienia się, oddzielając je spacją. Przykład: placa_pod NUMBER(6,2) CONSTRAINT nn_placa_pod NOT NULL CONSTRAINT chk_min_placa CHECK(placa_pod > 100),..., id_zesp NUMBER(4) NOT NULL CONSTRAINT fk_zespoly REFERENCES zespoly(id_zesp), + 21

CREATE TABLE dydaktycy ( id_dydaktyka NUMBER(2) CONSTRAINT pk_dydaktycy PRIMARY KEY, nazwisko VARCHAR2(15) NOT NULL CONSTRAINT uk_nazwisko UNIQUE, tytuł VARCHAR2(10) NOT NULL); CREATE TABLE przedmioty ( Tworzenie relacji przykład (1) Tabele DYDAKTYCY, PRZEDMIOTY i POMIESZCZENIA przechowują, odpowiednio: dane wszystkich nauczycieli, dane o wykładanych przedmiotach oraz dane o pomieszczenia, w których mogą zostać przeprowadzone zajęcia. id_przedmiotu NUMBER(2) CONSTRAINT pk_przedmioty PRIMARY KEY, nazwa VARCHAR2(15) NOT NULL UNIQUE); CREATE TABLE pomieszczenia ( nr_pomieszczenia NUMBER(2), nr_budynku NUMBER(2), pojemność NUMBER(4) NOT NULL CHECK(pojemność > 0), CONSTRAINT pk_pomieszczenia PRIMARY KEY(nr_pomieszczenia, nr_budynku)); 22

Tworzenie relacji - przykład (2) Tabela ZAJECIA łączy dane z tabel DYDAKTYCY, PRZEDMIOTY i POMIESZCZENIA, w tej tabeli przechowujemy dane o tym, kto wykłada jaki przedmiot i w jakiej formie. CREATE TABLE zajecia ( id_zajec NUMBER(2) CONSTRAINT pk_zajecia PRIMARY KEY, rodzaj_zaj VARCHAR2(15) CHECK (rodzaj_zaj IN ('wykład','ćwiczenia','laboratorium','projekt')), id_dydaktyka NUMBER(2) CONSTRAINT fk_zajecia_dydakt REFERENCES dydaktycy(id_dydaktyka) ON DELETE SET NULL, id_przedmiotu NUMBER(2) NOT NULL CONSTRAINT fk_zajecia_przed REFERENCES przedmioty(id_przedmiotu) ON DELETE CASCADE, nr_pomieszczenia NUMBER(2) NOT NULL, nr_budynku NUMBER(2) NOT NULL, CONSTRAINT fk_zajecia_pom FOREIGN KEY (nr_pomieszczenia, nr_budynku) REFERENCES pomieszczenia(nr_pomieszczenia, nr_budynku)); 23

Modyfikowanie struktury relacji (1) Dodawanie nowych atrybutów: ALTER TABLE nazwa_relacji ADD nazwa typ(rozmiar) [DEFAULT wartość] [definicja_ograniczeń_integralnościowych_atrybutu]; ALTER TABLE pracownicy ADD data_ur DATE CONSTRAINT chk_data_ur CHECK(data_ur > DATE '1900-01-01'); Modyfikowanie istniejących atrybutów: ALTER TABLE nazwa_relacji MODIFY nazwa typ(rozmiar) [DEFAULT wartość] [NOT NULL]; ALTER TABLE pracownicy MODIFY nazwisko VARCHAR(50) NOT NULL; Jeśli dodajesz lub modyfikujesz listę atrybutów, otocz je nawiasami. 24

Modyfikowanie struktury relacji (2) Usuwanie atrybutów z relacji: ALTER TABLE nazwa_relacji DROP [COLUMN nazwa_atrybutu] (lista_atrybutów); ALTER TABLE pracownicy DROP COLUMN placa_pod; ALTER TABLE pracownicy DROP (placa_pod, placa_dod); Zmiana nazwy atrybutu relacji: ALTER TABLE nazwa_relacji RENAME COLUMN stara_nazwa TO nowa_nazwa; 25

Zarządzanie ogr. integralnościowymi (1) Dodawanie nowych ograniczeń integralnościowych: ALTER TABLE nazwa_relacji ADD [CONSTRAINT nazwa_ograniczenia] definicja_ograniczenia; używamy składni ograniczenia dla relacji, istniejące ograniczenie nie może być zmodyfikowane, jeśli definiujesz kilka ograniczeń, otocz je nawiasami. ALTER TABLE pracownicy ADD CONSTRAINT uk_nazwisko UNIQUE(nazwisko); ograniczenie NOT NULL dodajemy/usuwamy poleceniem modyfikacji struktury atrybutu: ALTER TABLE pracownicy MODIFY data_ur NOT NULL; ALTER TABLE pracownicy MODIFY nazwisko NULL; 26

Zarządzanie ogr. integralnościowymi (2) Wyłączenie ograniczenia integralnościowego: ALTER TABLE relacja DISABLE [CONSTRAINT nazwa] [PRIMARY KEY] [UNIQUE(lista_atrybutów_w_kluczu_unikalnym)]; ALTER TABLE pracownicy DISABLE CONSTRAINT prac_pk; Włączenie ograniczenia integralnościowego: ALTER TABLE relacja ENABLE [CONSTRAINT nazwa] [PRIMARY KEY] [UNIQUE(lista_atrybutów_w_kluczu_unikalnym)]; ALTER TABLE pracownicy ENABLE PRIMARY KEY; 27

Zarządzanie ogr. integralnościowymi (3) Usunięcie ograniczenia integralnościowego: ALTER TABLE relacja DROP [CONSTRAINT nazwa] [[PRIMARY KEY] [UNIQUE(lista_atrybutów_w_kluczu)] [CASCADE]]; ALTER TABLE pracownicy DROP UNIQUE(nazwisko); ALTER TABLE zespoly DROP PRIMARY KEY CASCADE; 28

Zmiana nazwy relacji, usuwanie relacji Zmiana nazwy istniejącej relacji: ALTER TABLE stara_nazwa RENAME TO nowa nazwa; Usunięcie relacji: DROP TABLE nazwa_relacji [CASCADE CONSTRAINTS]; usuwane są dane z relacji i indeksy założone dla relacji, jeżeli nie podano CASCADE CONSTRAINTS to polecenie może zakończyć się błędem (jeśli istnieją relacje zależne). 29

Słownik bazy danych (dot. Oracle) Perspektywy słownikowe opisujące ograniczenia integralnościowe Perspektywa USER_CONSTRAINTS Opis Ograniczenia integralnościowe USER_CONS_COLUMNS Atrybuty ograniczeń integralnościowych Przykład: SELECT constraint_name, constraint_type FROM user_constraints WHERE table_name = 'PRACOWNICY'; SELECT constraint_name, column_name FROM user_cons_columns WHERE table_name = 'PRACOWNICY' ORDER BY constraint_name, position; 30