Tworzenie relacji
Transkrypt
Tworzenie relacji
Tworzenie relacji • polecenie CREATE TABLE CREATE CREATETABLE TABLEnazwa_relacji nazwa_relacji (nazwa_atrybutu (nazwa_atrybutu11typ typ(rozmiar) (rozmiar)[DEFAULT [DEFAULTwartość_domyślna] wartość_domyślna] [[[CONSTRAINT ogr] ograniczenie_ atr], [CONSTRAINTnazwa_ nazwa_ogr] ograniczenie_atr], nazwa_atrybutu nazwa_atrybutu22typ typ(rozmiar) (rozmiar)[DEFAULT [DEFAULTwartość_domyślna] wartość_domyślna] [[[CONSTRAINT nazwa_ ogr] ograniczenie_ atr], [CONSTRAINT nazwa_ogr] ograniczenie_atr], .... .... [[[CONSTRAINT ogr] ograniczenie_ rel, ...] [CONSTRAINTnazwa_ nazwa_ogr] ograniczenie_rel, ...]);); Język definicji danych 1 Typy atrybutów relacji • • • • • • • • • Język definicji danych number, number(r), number(r,n) char(r) varchar2(r), varchar(r) date long long raw 2 Ograniczenia integralnościowe atrybutu ograniczenie_ atr ograniczenie_atr NULL NULL przykład przykład placa _dod number (6,2) placa_dod number(6,2) NOT NOTNULL NULL UNIQUE UNIQUE placa _pod number (6,2) not , placa_pod number(6,2) notnull null, nazwisko nazwiskovarchar2(12) varchar2(12)unique unique PRIMARY PRIMARYKEY KEY REFERENCES REFERENCES numer (4) primary numernumber number(4) primarykey key id_ zesp number (4) id_zesp number(4) ON ONDELETE DELETECASCADE CASCADE references (id_zesp) referenceszespoly zespoly(id_zesp) id_ zesp number (4) id_zesp number(4) references (id_zesp) referenceszespoly zespoly(id_zesp) on ondelete deletecascade cascade CHECK CHECK Język definicji danych placa _pod number (6,2) check placa_pod number(6,2) check ((placa_pod placa_pod between between100 100and and3000) 3000) 3 Ograniczenia integralnościowe relacji • UNIQUE • PRIMARY KEY • REFERENCES • ON DELETE CASCADE • CHECK • FOREIGN KEY ... REFERENCES Domyślna wartość atrybutu • definiując atrybut możemy mu przypisać wartość domyślną, którą poprzedzamy słowem kluczowym DEFAULT placa_pod number(6,2) DEFAULT 0 Język definicji danych 4 Tworzenie relacji - przykład CREATE CREATETABLE TABLEdydaktycy dydaktycy(( id_ dydakt number (2) CONSTRAINT dydakt_pk PRIMARY id_dydakt number(2) CONSTRAINTid_ id_dydakt_pk PRIMARYKEY, KEY, nazwisko nazwiskovarchar2(15) varchar2(15)NOT NOTNULL, NULL, tytuł tytułvarchar2(10) varchar2(10)NOT NOTNULL); NULL); CREATE CREATETABLE TABLEprzedmioty przedmioty(( id_ przedm number (2) CONSTRAINT przedm_pk PRIMARY id_przedm number(2) CONSTRAINTid_ id_przedm_pk PRIMARYKEY, KEY, nazwa nazwavarchar2(15) varchar2(15)NOT NOTNULL); NULL); Język definicji danych 5 Tworzenie relacji - przykład cd. CREATE CREATETABLE TABLEzajęcia zajęcia(( id_ zajeć number (2) CONSTRAINT zajeć_pk PRIMARY id_zajeć number(2) CONSTRAINTid_ id_zajeć_pk PRIMARYKEY, KEY, rodzaj_ zaj varchar2(15) zaj_chk CHECK rodzaj_zaj varchar2(15)CONSTRAINT CONSTRAINTrodzaj_ rodzaj_zaj_chk CHECK (rodzaj_ zaj in (rodzaj_zaj in('wykład', ('wykład','ćwiczenia', 'ćwiczenia','laboratorium', 'laboratorium','projekt' 'projekt')), )), id_ dydakt number (2) NOT id_dydakt number(2) NOTNULL, NULL, id_ przedm number (2) NOT id_przedm number(2) NOTNULL, NULL, foreign dydakt) REFERENCES dydakt) foreignkey key(id_ (id_dydakt) REFERENCESdydaktycy(id_ dydaktycy(id_dydakt) ON ONDELETE DELETECASCADE, CASCADE, foreign przedm) REFERENCES przedm) foreignkey key(id_ (id_przedm) REFERENCESprzedmioty(id_ przedmioty(id_przedm) );); Język definicji danych 6 Słownik bazy danych • opis zdefiniowanych ograniczeń integralnościowych – USER_CONSTRAINTS – USER_CONS_COLUMNS • opis zdefiniowanych relacji – USER_TABLES select _name from selecttable table_name fromUSER_TABLES; USER_TABLES; Język definicji danych 7 Tworzenie relacji cd. • CREATE TABLE AS SELECT CREATE CREATETABLE TABLEnazwa_relacji nazwa_relacji [(nazwa null|not null ], ...)] [(nazwaatrybutu atrybutu[[null|not null], ...)] AS ASSELECT SELECTklauzula_SELECT; klauzula_SELECT; CREATE CREATETABLE TABLElista_plac lista_plac AS _pod ASSELECT SELECTnazwisko, nazwisko,placa placa_pod FROM FROMpracownicy; pracownicy; Język definicji danych 8 Modyfikowanie schematu relacji • modyfikowanie definicji atrybutu ALTER ALTERTABLE TABLErelacja relacja MODIFY MODIFY(atrybut (atrybuttyp typ(rozmiar) (rozmiar) [[default default wartość_domyślna] |not null ] );); wartość_domyślna][[null null|not null] ALTER ALTERTABLE TABLEpracownicy pracownicy MODIFY .’ MODIFY(tytuł_nauk (tytuł_naukvarchar2(15) varchar2(15)DEFAULT DEFAULT’mgr ’mgrinż inż.’ NOT NOTNULL); NULL); Język definicji danych 9 Modyfikowanie schematu relacji cd. • dodanie atrybutu ALTER ALTERTABLE TABLErelacja relacja ADD ADD(nazwa_atrybutu (nazwa_atrybututyp typ(rozmiar) (rozmiar) [DEFAULT [DEFAULTwartość_domyślna] wartość_domyślna] [[[[constraint constraint nazwa_ ogr] ograniczenie_ atr] );); nazwa_ogr] ograniczenie_atr] ALTER ALTERTABLE TABLEpracownicy pracownicy ADD ADD(tytuł_nauk (tytuł_naukVARCHAR2(10) VARCHAR2(10));); • usuwanie atrybutu ALTER ALTERTABLE TABLErelacja relacjaDROP DROP(nazwa_atrybutu); (nazwa_atrybutu); Język definicji danych 10 Modyfikowanie schematu relacji cd. • dodanie ograniczenia integralnościowego relacji ALTER ALTERTABLE TABLErelacja relacja ADD constraint nazwa_ ogr] ograniczenie_ rel); ADD([([constraint nazwa_ogr] ograniczenie_rel); ALTER ALTERTABLE TABLEpracownicy pracownicy ADD chk CHECK ADD(CONSTRAINT (CONSTRAINTetat_ etat_chk CHECK(etat (etatIN IN ('DYREKTOR', ('DYREKTOR','PROFESOR', 'PROFESOR','ADIUNKT', 'ADIUNKT', 'ASYSTENT', 'ASYSTENT','STAŻYSTA', 'STAŻYSTA','SEKRETARKA') 'SEKRETARKA'))));); ALTER ALTERTABLE TABLEpracownicy pracownicy ADD fk FOREIGN zesp) ADD(CONSTRAINT (CONSTRAINTprac_ prac_fk FOREIGNKEY KEY(id_ (id_zesp) REFERENCES (id_zesp )));); REFERENCESzespoly zespoly(id_zesp Język definicji danych 11 Zarządzanie ograniczeniami integralnościowymi • włączenie ograniczenia integralnościowego ALTER ALTERTABLE TABLErelacja relacja ENABLE ogr; ENABLErodzaj_ rodzaj_ogr; ALTER ALTERTABLE TABLErelacja relacja ENABLE ogr; ENABLECONSTRAINT CONSTRAINTnazwa_ nazwa_ogr; ALTER ALTERTABLE TABLEpracownicy pracownicy ENABLE fk; ENABLECONSTRAINT CONSTRAINTprac_ prac_fk; • wyłączenie ograniczenia integralnościowego ALTER ALTERTABLE TABLErelacja relacja DISABLE ogr; DISABLErodzaj_ rodzaj_ogr; ALTER ALTERTABLE TABLErelacja relacja DISABLE ogr; DISABLECONSTRAINT CONSTRAINTnazwa_ nazwa_ogr; ALTER ALTERTABLE TABLEpracownicy pracownicy DISABLE DISABLEPRIMARY PRIMARYKEY; KEY; Język definicji danych 12 Zarządzanie ograniczeniami integralnościowymi cd. • usunięcie ograniczenia integralnościowego ALTER ALTERTABLE TABLErelacja relacja DROP ogr [CASCADE]; DROProdzaj_ rodzaj_ogr [CASCADE]; ALTER ALTERTABLE TABLErelacja relacja DROP ogr [CASCADE]; DROPCONSTRAINT CONSTRAINTnazwa_ nazwa_ogr [CASCADE]; ALTER ALTERTABLE TABLEpracownicy pracownicy DROP DROPPRIMARY PRIMARYKEY KEYCASCADE; CASCADE; ALTER ALTERTABLE TABLEpracownicy pracownicy DROP chk; DROPCONSTRAINT CONSTRAINTetat_ etat_chk; Język definicji danych 13 Zmiana nazwy relacji RENAME RENAMEstara_nazwa stara_nazwaTO TOnowa_nazwa; nowa_nazwa; Usuwanie relacji DROP DROPTABLE TABLEnazwa_relacji nazwa_relacji[CASCADE [CASCADECONSTRAINTS]; CONSTRAINTS]; PRACOWNICY ZESPOLY REFERENCES zespoly(id_zesp) DROP DROPTABLE TABLEzespoly zespolyCASCADE CASCADECONSTRAINTS; CONSTRAINTS; Język definicji danych 14