Monika Sychla 241858 Daniel Smolarek 241875. Projekt bazy danych



Podobne dokumenty
Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Hurtownia Świętego Mikołaja projekt bazy danych

BAZA DANYCH SIECI HOTELI

CREATE TABLE autorzy ( id_autora SERIAL PRIMARY KEY, imie TEXT, nazwisko TEXT );

Bazy danych. Projekt prostej biblioteki. 26 stycznia Hubert Anisimowicz,

Przykładowa baza danych BIBLIOTEKA

Projekt-bazy danych Poczta

Wykład 05 Bazy danych

Bartosz Jachnik - Kino

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

SQL :: Data Definition Language

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Baza danych hotel Maciej Gerus

Aspekty aktywne baz danych

Język SQL, zajęcia nr 1

LAB 3 (część 1 Projektu)

Projekt bazy danych. Schemat bazy danych. Opis bazy danych

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

Autor: Joanna Karwowska

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

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

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

P o d s t a w y j ę z y k a S Q L

Paweł Rajba

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

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

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

Wykład 8. SQL praca z tabelami 5

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

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

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

DECLARE VARIABLE zmienna1 typ danych; BEGIN

TABUN_CMS. System zarządzania treścią dla dedykowanej grupy użytkowników. Tabun_CMS 2008 Marcin Biegun, Szymon Bąk

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

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

Bazy danych. Dr inż. Paweł Kasprowski

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Składowane procedury i funkcje

SQL 4 Structured Query Lenguage

PODSTAWY BAZ DANYCH 13. PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Bazy danych - Materiały do laboratoriów VIII

Język SQL, zajęcia nr 2

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

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

Bazy danych programowanie Wykład dla studentów matematyk

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Baza danych Ogrodu Zoologicznego

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

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

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

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

Muzyczna Baza Danych

Wyzwalacze (triggery) Przykład

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

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Bazy danych 10. SQL Widoki

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Tabele wykorzystywane w przykładach

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

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

CREATE TABLE logika (p BOOLEAN); INSERT INTO logika VALUES(true); INSERT INTO logika VALUES(false); INSERT INTO logika VALUES(NULL);

Zaawansowane bazy danych i hurtownie danych semestr I

Wykład 2. SQL 1 Structured Query Lenguage

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

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

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

Bazy danych 11. SQL Procedury składowane, kursory i wyzwalacze

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Politechnika Gdańska, międzywydziałowy kierunek INŻYNIERIA BIOMEDYCZNA. Instrukcja do laboratorium z przedmiotu: Bazy danych. Laboratorium nr 4.

Systemowe aspekty baz

PODSTAWOWE POJĘCIA BAZ DANYCH

ACESS- zadania z wykorzystaniem poleceń SQL

Widok Connections po utworzeniu połączenia. Obszar roboczy

1. Dodatkowe informacje. 2. Czynnoci wstpne. 3. Zadania

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

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

Bloki anonimowe w PL/SQL

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

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Obiektowe bazy danych

Pakiety podprogramów Dynamiczny SQL

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Bazy danych 8. Procedury składowane i kursory. P. F. Góra

BAZY DANYCH Cz III. Transakcje, Triggery

Projektowanie systemów baz danych

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

PL/SQL. Zaawansowane tematy PL/SQL

Administracja i programowanie pod Microsoft SQL Server 2000

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

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

Oracle Label Security

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

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

Transkrypt:

Monika Sychla 241858 Daniel Smolarek 241875 Projekt bazy danych

Naszym zadaniem było zaprojektowanie przykładowej bazy danych, w oparciu o zagadnienia jakie zostały wprowadzone w trakcie kursu z baz danych. Baza danych jaką zaprojektowaliśmy przedstawia działalność i funkcjonalność, miejsca z którego każdy z nas korzystał biblioteki. Poniższa baza danych składa się z dwunastu tabel. Jedna z tabel zawiera zestawienie wszystkich pracowników danej biblioteki. Każdy pracownik posiada swój unikalny identyfikator (id_pracownik), dzięki któremu możemy rozróżnić danego pracownika od innego np. gdyby w danej bibliotece pracowało dwóch Janów Kowalskich, dzięki id_pracownik jesteśmy w stanie ich zróżnicować. W tabeli pracownicy, znajdują się zestawienia osób, które pracują w danej filii bibliotecznej wraz z ich imieniem, nazwiskiem, adresem e-mail, nr pesel, stanowiskiem oraz wynagrodzeniem. Każda osoba z tabeli pracownicy jest przypisana do danej filii biblioteki w której pracuje (klucz obcy do tabeli filie). Filie są rozróżnialne między swoją po identyfikatorze (id_filia). W tabeli filia znajduje się identyfikator danej filii, miasto w którym jest filia, ulica przy której ma swoja siedzibę oraz kod pocztowy. Książki do filii dostarczane są przed dostawców których znajdziemy w tabeli dostawcy_książek. Każdy z dostawców ma swój unikalny id_dostawcy, posiada również imię, nazwisko, w tabeli tej znajdziemy również preferowany termin dostawy książki do danej fili oraz zrealizowany termin dostawy, widzimy, czy zamówienie jest jeszcze aktywne, w jakiej ilości, na jaką cenę oraz do jakiej filii ma być dostarczone. Nasz baza posiada także tabelę czytelnicy, każdy czytelnik jest przypisany do fili z której korzysta (klucz obcy z tabelą filia), czytelnik jest rozróżniany po id_czytelnik, który jest unikalny dla każdej osoby, czytelnik posiada swoją własną kartę, a także imię, nazwisko oraz numer pesel. Czytelnicy wypożyczając książki, o określonym id_egzemplarza mają wyznaczony termin zwrotu danego woluminu, który znajduje się w tabeli termin. Nasz baza danych posiada także tabelę książki w której znajdziemy tytuł, autora, wydawcę, rok wydania, nr isbn, tematykę, rodzaj, oraz odpowiedz na to czy dana książka nadaję się dla dzieci. Każda książka jest rozróżniana po unikalnym id_ksiązki. W tabeli książki znajdziemy id_autora, którego imię i nazwisko możemy znaleźć w tabeli autorzy właśnie po id_autora. Tabela książki łączy się z tabelą dostawcy_książek za pomocą tabeli łączącej: zamówienia, w której znajdziemy id_dostawcy, id_książki oraz zamawiana_ilosc, czyli liczbę książek jaka została zamówiona u danego dostawcy. Nasz baza danych odznacza się następującymi własnościami: Kod pocztowy musi być postaci xx-xxx data wypożyczenia ma postać yyyy-yy-yy id_filia nie może być NULLem Zamówienie ma domyślnie wartość aktywne id_egzemplarza nie może być NULLem Baza, którą zaprojektowaliśmy odznacza się następującą funkcjonalnością: Osoba, która posiada wysoką karę nie może wypożyczyć książek Ilość zamówionych książek musi być większa, równa od 0. Cena zamówienie musi być większa od 0 Wpisując tytuł książki zostanie nam wyświetlony jej rodzaj. Wpisując imię i nazwisko pracownika zostanie wyświetlone jego stanowisko. Można sprawdzić wysokość kary danej osoby

Poniżej zamieszczony został schemat bazy danych: Kod do bazy danych: DROP TABLE co_to_jest CASCADE; DROP TABLE kara_wypozyczenie CASCADE; DROP TABLE pozycja CASCADE; DROP TABLE autorzy CASCADE; DROP TABLE czytelnicy CASCADE; DROP TABLE dostawcy_ksiazek CASCADE; DROP TABLE ksiazki CASCADE; DROP TABLE termin CASCADE; DROP TABLE rodzaje CASCADE; DROP TABLE egzemplarze CASCADE; DROP TABLE filia CASCADE; DROP TABLE zamowinia CASCADE; CREATE FUNCTION co_to_jest(s character varying) RETURNS character varying LANGUAGE plpgsql AS $$ DECLARE w RECORD; BEGIN SELECT INTO w * FROM ksiazki WHERE tytul=s; RETURN w.rodzaje; END; $$;

CREATE FUNCTION kara_wyporzyczenie() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN IF (SELECT kara FROM czytelnicy WHERE id_czytelnik = new.id_czytelnika) >5 THEN RAISE EXCEPTION '% za wysoka kara zeby wyporzyczyc'; end if; return new; end; $$; CREATE FUNCTION pozycja(a character varying, b character varying) RETURNS character varying LANGUAGE plpgsql AS $$ DECLARE w RECORD; BEGIN SELECT INTO w * FROM pracownicy WHERE imie=a AND nazwisko=b; RETURN w.stanowisko; END $$; CREATE FUNCTION wynagrodzenia() RETURNS trigger LANGUAGE plpgsql AS $$ begin if new.wynagrodzenie>=old.wynagrodzenie then new.wynagrodzenie=old.wynagrodzenie; return new; end if; end; $$; CREATE TABLE autorzy ( id_autora integer NOT NULL, imie character varying(50), nazwisko character varying(50) NOT NULL CREATE TABLE czytelnicy ( id_czytelnik integer NOT NULL, imie character varying(50) NOT NULL, nazwisko character varying(50) NOT NULL, pesel_czytelnik character varying(50) NOT NULL, kara integer, id_filia integer NOT NULL CREATE TABLE dostawcy_ksiazek ( id_dostawcy integer NOT NULL, imie character varying(50) NOT NULL, nazwisko character varying(50) NOT NULL, zamawiana_ilosc integer, cena integer, zralizowany_termin_dostawy date, id_filia integer, czy_zamowienie_aktywne boolean DEFAULT true NOT NULL, preferowany_termin_dostawy date, CONSTRAINT dostawcy_ksiazek_cena_check CHECK ((cena > 0)) CREATE TABLE filia ( id_filia integer NOT NULL,

miasto character varying(50) DEFAULT 'Wroclaw'::character varying NOT NULL, ulica character varying(50) NOT NULL, kod character varying(6) NOT NULL CREATE VIEW dostawa_ksiazek AS SELECT dostawcy_ksiazek.id_dostawcy, dostawcy_ksiazek.preferowany_termin_dostawy, CASE WHEN dostawcy_ksiazek.czy_zamowienie_aktywne THEN 'aktywne'::text WHEN (NOT dostawcy_ksiazek.czy_zamowienie_aktywne) THEN 'zakonczone'::text ELSE 'brak danych'::text END AS status_dostawy, filia.id_filia, filia.ulica, filia.kod, filia.miasto FROM dostawcy_ksiazek, filia WHERE (dostawcy_ksiazek.id_filia = filia.id_filia CREATE TABLE egzemplarze ( id_egzemplarza integer NOT NULL, isbn character varying(50) NOT NULL CREATE TABLE ksiazki ( id_ksiazki integer NOT NULL, tytul character varying(50) NOT NULL, id_autora integer NOT NULL, wydawca character varying(50) NOT NULL, isbn character varying(50) NOT NULL, rok_wydania integer, rodzaje character varying(50) NOT NULL, tematyka character varying(50) NOT NULL, czy_dla_dzieci boolean DEFAULT true NOT NULL CREATE TABLE termin ( data_wypozyczenia date, data_oddanie date, id_egzemplarza integer CREATE VIEW ksiazki_info AS SELECT ksiazki.id_ksiazki, ksiazki.tytul, ksiazki.rodzaje, termin.data_wypozyczenia FROM (ksiazki JOIN termin ON ((ksiazki.id_ksiazki = termin.id_egzemplarza)) CREATE TABLE pracownicy ( id_pracownik integer NOT NULL, imie character varying(50) NOT NULL, nazwisko character varying(50) NOT NULL, stanowisko character varying(50) NOT NULL, pesel_pracownika character varying(10) NOT NULL, wynagrodzenie integer, email character varying(100),

id_filia integer CREATE TABLE rodzaje ( rodzaj character varying(50) NOT NULL CREATE TABLE tematy ( tematyka character varying(50) NOT NULL CREATE TABLE wyporzyczenia ( id_egzemplarza integer, id_czytelnika integer CREATE TABLE zamowienie ( id_dostawcy integer NOT NULL, id_ksiazki integer NOT NULL, zamawiana_ilosc integer NOT NULL, CONSTRAINT zamowienie_zamawiana_ilosc_check CHECK ((zamawiana_ilosc >= 0)) ALTER TABLE ONLY autorzy ALTER COLUMN id_autora SET DEFAULT nextval('autorzy_id_autora_seq'::regclass INSERT INTO autorzy VALUES (1, 'Adam', 'Mickiewicz' INSERT INTO autorzy VALUES (2, 'Bartlomiej', 'Ochlapski' INSERT INTO autorzy VALUES (4, 'Ludomir', 'Newelski' INSERT INTO autorzy VALUES (5, 'Boleslaw', 'Prus' INSERT INTO autorzy VALUES (6, 'Czeslaw', 'Milosz' INSERT INTO autorzy VALUES (7, 'Lech', 'Banachowski' INSERT INTO autorzy VALUES (8, 'Krzysztof', 'Stencel' INSERT INTO autorzy VALUES (9, 'Mary', 'Shelley' INSERT INTO autorzy VALUES (10, 'Dean', 'Koonitz' INSERT INTO autorzy VALUES (11, 'Sigmund', 'Freud' INSERT INTO autorzy VALUES (12, 'Hector', 'Garcia-Molina' INSERT INTO autorzy VALUES (13, 'Jeffrey D.', 'Ullman' INSERT INTO autorzy VALUES (14, 'Jennifer', 'Widom' INSERT INTO autorzy VALUES (3, 'Krystan1', 'Starobramski' INSERT INTO czytelnicy VALUES (5, 'Ernest', 'Alfons', '887', 0, 1 INSERT INTO czytelnicy VALUES (6, 'Adam', 'Nawalkiewicz', '886', 0, 3 INSERT INTO czytelnicy VALUES (7, 'Monika', 'Malomyslaca', '885', 0, 1 INSERT INTO czytelnicy VALUES (8, 'Daniel', 'Malolepszy', '884', 0, 2 INSERT INTO czytelnicy VALUES (9, 'Anastazja', 'Malolepsza', '883', 0, 4 INSERT INTO czytelnicy VALUES (1, 'Henryk', 'Czekalski', '990', 0, 2 INSERT INTO czytelnicy VALUES (3, 'Anna', 'Helena', '9921', 1, 2 INSERT INTO czytelnicy VALUES (2, 'Adam', 'Mackowski', '9911s', 12, 3 INSERT INTO dostawcy_ksiazek VALUES (2, 'Monika', 'Zielinska', 15, 3000, '2013-12-18', NULL, true, NULL INSERT INTO dostawcy_ksiazek VALUES (3, 'Monika', 'Zielinska', 30, 678, '2013-10-05', NULL, true, NULL INSERT INTO dostawcy_ksiazek VALUES (4, 'Monika', 'Zielinska', 100, 1239, '2013-05-06', NULL, true, NULL INSERT INTO dostawcy_ksiazek VALUES (1, 'Andrzej', 'Zapala', 23, 4601, '2013-11-30', 2, true, '2013-11-30' INSERT INTO egzemplarze VALUES (1, '8934-2763-68' INSERT INTO egzemplarze VALUES (2, '8934-2763-68' INSERT INTO filia VALUES (1, 'Wroclaw', 'Kazimierz', '50-077' INSERT INTO filia VALUES (2, 'Wroclaw', 'Kasprowicza', '52-067' INSERT INTO filia VALUES (4, 'Wroclaw', 'Kazikowicza', '52-067' INSERT INTO filia VALUES (3, 'Wroclaw', 'Nankierowicza', '58-098' INSERT INTO filia VALUES (1243567, 'Skierniewice', 'Jabłkowa', '12-345' INSERT INTO ksiazki VALUES (3, 'Kalina', 2, 'WSiP', '1234-4321-32', 1985, 'nowela', 'komedia', true

INSERT INTO ksiazki VALUES (5, 'TiK-TiK', 3, 'PWN', '1234-9876-54', 2001, 'czasopismo', 'polityka', true INSERT INTO ksiazki VALUES (7, 'Lalka', 5, 'PWN', '7865-2343-78', 1976, 'powiesc', 'spoleczno_psychologiczna', true INSERT INTO ksiazki VALUES (1, 'Pan_Tadeusz', 1, 'PWN', '8934-2763-67', 1998, 'powiesc', 'historyczna', true INSERT INTO ksiazki VALUES (123, 'awg', 2, 'asdf', '213', 123, 'powiesc', 'historyczna', true INSERT INTO ksiazki VALUES (2, 'Grazyna', 1, 'PWN', '8934-2763-68', 1991, 'powiesc', 'przygodowe', true INSERT INTO pracownicy VALUES (10, 'Adam', 'Adamowicz', 'dyrektor', '123', 8000, 'adamowicz@gmail.com', 1 INSERT INTO pracownicy VALUES (12, 'Michal', 'Michalojewicz', 'dyrektor', '789', 6000, 'michalek@onet.pl', 3 INSERT INTO pracownicy VALUES (13, 'Kazimierz', 'Adamkiewicz', 'kierownik', '321', 4000, 'kazik@gmail.com', 1 INSERT INTO pracownicy VALUES (16, 'Adam', 'Daniel', 'bibliotekarz', '111', 2000, 'daniel@gmail.com', 1 INSERT INTO pracownicy VALUES (17, 'Bartlomiej', 'Kazimierz', 'bibliotekarz', '888', 2100, 'bart@wp.pl', 2 INSERT INTO pracownicy VALUES (11, 'Bartlomiej', 'Bartlamowicz', 'dyrektor', '456', 8500, 'bb@wp.pl', 2 INSERT INTO pracownicy VALUES (14, 'Bartlomiej', 'Elastyczny', 'kierownik', '654', 4300, 'elastyk@wp.pl', 2 INSERT INTO pracownicy VALUES (15, 'Michal', 'Mikolaj', 'kierownik', '987', 3001, 'ja@onet.pl', 3 INSERT INTO rodzaje VALUES ('powiesc' INSERT INTO rodzaje VALUES ('nowela' INSERT INTO rodzaje VALUES ('czasopismo' INSERT INTO rodzaje VALUES ('popularno_naukowe' INSERT INTO rodzaje VALUES ('poradnik' INSERT INTO rodzaje VALUES ('powiesc' INSERT INTO rodzaje VALUES ('nowela' INSERT INTO rodzaje VALUES ('czasopismo' INSERT INTO rodzaje VALUES ('popularno_naukowe' INSERT INTO rodzaje VALUES ('poradnik' INSERT INTO zamowienie VALUES (1, 1, 15 INSERT INTO zamowienie VALUES (1, 3, 21 INSERT INTO zamowienie VALUES (1, 1, 15 INSERT INTO zamowienie VALUES (1, 3, 21 ALTER TABLE ONLY czytelnicy ADD CONSTRAINT czytelnicy_pesel_czytelnik_key UNIQUE (pesel_czytelnik ALTER TABLE ONLY czytelnicy ADD CONSTRAINT czytelnicy_pkey PRIMARY KEY (id_czytelnik ALTER TABLE ONLY dostawcy_ksiazek ADD CONSTRAINT dostawcy_ksiazek_pkey PRIMARY KEY (id_dostawcy ALTER TABLE ONLY egzemplarze ADD CONSTRAINT egzemplarze_pkey PRIMARY KEY (id_egzemplarza ALTER TABLE ONLY filia ADD CONSTRAINT filia_pkey PRIMARY KEY (id_filia ADD CONSTRAINT ksiazki_isbn_key UNIQUE (isbn

ADD CONSTRAINT ksiazki_pkey PRIMARY KEY (id_ksiazki ALTER TABLE ONLY pracownicy ADD CONSTRAINT pracownicy_pesel_pracownika_key UNIQUE (pesel_pracownika ALTER TABLE ONLY pracownicy ADD CONSTRAINT pracownicy_pkey PRIMARY KEY (id_pracownik ALTER TABLE ONLY rodzaje ADD CONSTRAINT rodzaje_pkey PRIMARY KEY (rodzaj ALTER TABLE ONLY tematy ADD CONSTRAINT tematy_pkey PRIMARY KEY (tematyka ALTER TABLE ONLY termin ADD CONSTRAINT termin_id_ksiazki_key UNIQUE (id_egzemplarza CREATE TRIGGER kara_wyporzyczenie BEFORE INSERT OR UPDATE ON wyporzyczenia FOR EACH ROW EXECUTE PROCEDURE kara_wyporzyczenie( CREATE TRIGGER wynagrodzenia AFTER UPDATE OF wynagrodzenie ON pracownicy FOR EACH ROW EXECUTE PROCEDURE wynagrodzenia( ALTER TABLE ONLY czytelnicy ADD CONSTRAINT czytelnicy_id_filia_fkey FOREIGN KEY (id_filia) REFERENCES filia(id_filia) ON UPDATE CASCADE; ALTER TABLE ONLY dostawcy_ksiazek ADD CONSTRAINT dostawcy_ksiazek_id_filia_fkey FOREIGN KEY (id_filia) REFERENCES filia(id_filia) ON UPDATE CASCADE; ALTER TABLE ONLY egzemplarze ADD CONSTRAINT egzemplarze_isbn_fkey FOREIGN KEY (isbn) REFERENCES ksiazki(isbn ADD CONSTRAINT ksiazki_id_autora_fkey FOREIGN KEY (id_autora) REFERENCES autorzy(id_autora) ON UPDATE CASCADE; ADD CONSTRAINT ksiazki_rodzaje_fkey FOREIGN KEY (rodzaje) REFERENCES rodzaje(rodzaj ADD CONSTRAINT ksiazki_tematyka_fkey FOREIGN KEY (tematyka) REFERENCES tematy(tematyka) ON UPDATE CASCADE; ADD CONSTRAINT ksiazki_tematyka_fkey FOREIGN KEY (tematyka) REFERENCES tematy(tematyka) ON UPDATE CASCADE; ADD CONSTRAINT ksiazki_tematyka_fkey FOREIGN KEY (tematyka) REFERENCES tematy(tematyka) ON UPDATE CASCADE; ADD CONSTRAINT ksiazki_tematyka_fkey FOREIGN KEY (tematyka) REFERENCES tematy(tematyka) ON UPDATE CASCADE; ALTER TABLE ONLY pracownicy ADD CONSTRAINT pracownicy_id_filia_fkey FOREIGN KEY (id_filia) REFERENCES filia(id_filia) ON UPDATE CASCADE; ALTER TABLE ONLY termin ADD CONSTRAINT termin_id_egzemplarza_fkey FOREIGN KEY (id_egzemplarza) REFERENCES egzemplarze(id_egzemplarza ALTER TABLE ONLY wyporzyczenia ADD CONSTRAINT wyporzyczenia_id_czytelnika_fkey FOREIGN KEY

(id_czytelnika) REFERENCES czytelnicy(id_czytelnik ALTER TABLE ONLY wyporzyczenia ADD CONSTRAINT wyporzyczenia_id_egzemplarza_fkey FOREIGN KEY (id_egzemplarza) REFERENCES egzemplarze(id_egzemplarza ALTER TABLE ONLY zamowienie ADD CONSTRAINT zamowienie_id_dostawcy_fkey FOREIGN KEY (id_dostawcy) REFERENCES dostawcy_ksiazek(id_dostawcy ALTER TABLE ONLY zamowienie ADD CONSTRAINT zamowienie_id_ksiazki_fkey FOREIGN KEY (id_ksiazki) REFERENCES ksiazki(id_ksiazki Sprawdzenie: więz check: INSERT INTO filia(id_filia, ulica, miasto, kod) VALUES ('5','wielka','brzeg','1111') funkcje: SELECT pozycja(jan) (kowalski) SELECT rodzaj (a) Przykład interfejsu graficznego w PHP: Spróbujmy dodać zamówienie na cenę 0:

Jak widać zamówenie nie zostało dodane: Wstawmy zamówienie na cenę 1: Teraz nam się udało Spróbujmy edytować zamówienie:

Zmieńmy ilość na ujemną: Nie uda się to, spróbujmy więc zmienić ilość jednak, niech będzie ona wartością dodatnią: Ta operacja zostanie zakończona powodzeniem