Bartosz Jachnik - Kino



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

Baza danych hotel Maciej Gerus

Projekt-bazy danych Poczta

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

Monika Sychla Daniel Smolarek Projekt bazy danych

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

Projekt bazy danych. Schemat bazy danych. Opis bazy danych

SQL :: Data Definition Language

Aspekty aktywne baz danych

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

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

Programowanie w języku Java. Bazy danych SQLite w Javie

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

Język SQL, zajęcia nr 1

Bazy Danych i Usługi Sieciowe

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

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

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Bazy danych i usługi sieciowe

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

Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com

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

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

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

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

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

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

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

SQL 4 Structured Query Lenguage

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

Wykład 05 Bazy danych

Paweł Rajba

Bazy danych. dr inż. Arkadiusz Mirakowski

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

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

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

Bazy danych 10. SQL Widoki

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Wykład 8. SQL praca z tabelami 5

Baza danych Ogrodu Zoologicznego

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski

Tabele wykorzystywane w przykładach

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

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Połączenia między bazami danych i programem w języku Java część 2

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

Aplikacja wielowątkowa prosty komunikator

Muzyczna Baza Danych

Zaawansowane bazy danych i hurtownie danych semestr I

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

JAVA I BAZY DANYCH. MATERIAŁY:

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

PODSTAWY BAZ DANYCH 13. PL/SQL

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

Programowanie w języku Java

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

Cele. Definiowanie wyzwalaczy

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

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

Struktura bazy danych

Systemowe aspekty baz

Składowane procedury i funkcje

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

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Przykładowa baza danych BIBLIOTEKA

ACESS- zadania z wykorzystaniem poleceń SQL

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

Bazy danych programowanie Wykład dla studentów matematyk

Relacyjne bazy danych. Podstawy SQL

Systemowe aspekty baz danych

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

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

Język SQL, zajęcia nr 2

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

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

Oracle PL/SQL. Paweł Rajba.

Wyzwalacze (triggery) Przykład

Aplikacja wielow tkowa prosty komunikator

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Pakiety podprogramów Dynamiczny SQL

Programowanie Obiektowe Java

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

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

Autor: Joanna Karwowska

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra

Paweł Cieśla. Dokumentacja projektu

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

Kontenery i komponenty graficzne

Relacyjne bazy danych. Podstawy SQL

Transkrypt:

Bartosz Jachnik - Kino I. Opis bazy Prezentowana baza danych stworzona została na potrzeby prowadzenia kina. Zawiera ona 8 tabel, które opisują filmy grane w danym okresie w kinie, wraz ze szczegółowym opisem oraz cały harmonogram seansów. Film opisany jest przez cały szereg własności, w naszej bazie znajdziemy np. informacje na temat jego reżysera, obsady, grupy wiekowej dla jakiej jest przeznaczony oraz technologi w jakiej można go obejrzeć w naszym kinie (3D, 48fps itp.). Podstawową funkcjonalnością jest rezerwacja miejsc na dane seanse. Rezerwacja ta odbywa się pod warunkiem istnienia wolnych miejsc w sali w której odbędzie się seans. Rezerwacja obsługiwana jest przez specjalny wyzwalacz. Znajdziemy też informacje o rodzaju danego filmu. Podobnie wiele informacji znajdziemy na temat konkretnego już seansu, na który możemy się zapisać. Kluczową informacją jest tu maksymalna liczba wolnych miejsc na danej sali. Wprowadzanie danych do bazy obwarowane jest dodatkowo więzami CHECK które uniemożliwiają wprowadzenie seansu który zakończył się jeszcze przed swoim rozpoczęciem, czy który odbywać miałby się w nieistniejącej sali. Baza danych zaopatrzona jest w bardzo proste i niestety nie dokończone GUI napisane w języku JAVA. GUI to pozwala niestety jedynie na wyświetlanie zawartości niektórych tabel. Baza została uzupełniona pewną liczbą przykładowych rekordów. II. Najważniejsze tabele i klucze Baza danych Kino składa się z następujących tabeli: - Film, z kluczem głównym kod filmu - Rodzaje, zawierającą rodzaje wszystkich filmów granych w naszym kinie - Twórcy, w której znajdziemy dodatkowe informacje o twórcach danego filmu i jego obsadzie - Seans, której krotki odpowiadają konkretnym seansom, wraz z ich datami, godzinami rozpoczęcia i zakończenia oraz numerami sal w których dany seans się odbędzie. CREATE DATABASE Kino; III. Kod SQL DROP TABLE film CASCADE; CREATE TABLE IF NOT EXISTS film ( kod_filmu VARCHAR(10) NOT NULL, rodzaj_filmu VARCHAR(20), tytul_filmu VARCHAR(50) NOT NULL UNIQUE DROP TABLE rodzaje CASCADE; CREATE TABLE IF NOT EXISTS rodzaje ( rodzaj VARCHAR(20) NOT NULL DROP TABLE legenda CASCADE; CREATE TABLE IF NOT EXISTS legenda ( skrot VARCHAR(5) NOT NULL, opis TEXT NOT NULL DROP TABLE info CASCADE; CREATE TABLE IF NOT EXISTS info ( kod_filmu VARCHAR(10) NOT NULL, skrot VARCHAR(5) NOT NULL

DROP TABLE seans CASCADE; CREATE TABLE IF NOT EXISTS seans ( kod_seansu SERIAL NOT NULL, kod_filmu VARCHAR (20) NOT NULL, nr_sali INTEGER NOT NULL, data DATE NOT NULL, czas_rozpoczecia TIME NOT NULL, czas_zakonczenia TIME NOT NULL DROP TABLE sala CASCADE; CREATE TABLE IF NOT EXISTS sala ( kod_sali VARCHAR (10) NOT NULL, nr_sali INTEGER NOT NULL, liczba_miejsc INTEGER NOT NULL DROP TABLE tworcy CASCADE; CREATE TABLE IF NOT EXISTS tworcy ( kod_filmu VARCHAR (10) NOT NULL, rezyser VARCHAR (40) NOT NULL, scenariusz VARCHAR (40) NOT NULL, obsada TEXT DROP TABLE zarezerwowane_miejsca CASCADE; CREATE TABLE IF NOT EXISTS zarezerwowane_miejsca ( kod_seansu SERIAL NOT NULL, zarezerwowane_m INTEGER NOT NULL ALTER TABLE film ADD PRIMARY KEY (kod_filmu ALTER TABLE rodzaje ADD PRIMARY KEY (rodzaj ALTER TABLE legenda ADD PRIMARY KEY (skrot ALTER TABLE info ADD PRIMARY KEY (kod_filmu,skrot ALTER TABLE tworcy ADD PRIMARY KEY (kod_filmu ALTER TABLE seans ADD PRIMARY KEY (kod_seansu ALTER TABLE sala ADD PRIMARY KEY (kod_sali ALTER TABLE film ADD FOREIGN KEY (rodzaj_filmu) REFERENCES rodzaje(rodzaj) ALTER TABLE info ADD FOREIGN KEY (kod_filmu) REFERENCES film(kod_filmu) ALTER TABLE info ADD FOREIGN KEY (skrot) REFERENCES legenda(skrot) ALTER TABLE tworcy ADD FOREIGN KEY (kod_filmu) REFERENCES film(kod_filmu) ALTER TABLE seans ADD FOREIGN KEY (kod_filmu) REFERENCES film(kod_filmu) --ALTER TABLE sala ADD FOREIGN KEY (nr_sali) REFERENCES seans(nr_sali) -- ALTER TABLE zarezerwowane_miejsca ADD FOREIGN KEY (kod_seansu) REFERENCES seans(kod_seansu) ALTER TABLE seans ADD CHECK (nr_sali IN (1,2,3,4) ALTER TABLE seans ADD CHECK (czas_rozpoczecia<=czas_zakonczenia INSERT INTO rodzaje (rodzaj) VALUES ('sensacyjny'),('komedia'),('obyczajowy'), ('western'),('dramat'),('science-fiction'),('gangsterski'),('przygodowy' INSERT INTO film (kod_filmu,rodzaj_filmu,tytul_filmu) VALUES ('PF1994QT','sensacyjny','Pulp Fiction'

INSERT INTO film (kod_filmu,rodzaj_filmu,tytul_filmu) VALUES ('OC1972FFC','gangsterski','Ojciec Chrzestny' INSERT INTO film (kod_filmu,rodzaj_filmu,tytul_filmu) VALUES ('OBC1994BS','dramat','Orbitowanie bez cukru' INSERT INTO film (kod_filmu,rodzaj_filmu,tytul_filmu) VALUES ('PZK2003GV','przygodowy','Piraci z Karaibów' INSERT INTO legenda (skrot,opis) VALUES ('3D', 'Seans w 3D' INSERT INTO legenda (skrot,opis) VALUES ('48fps','Film emitowany w technologii 48fps' INSERT INTO legenda (skrot,opis) VALUES ('18+','Film przeznaczony dla widzów dorosłych' INSERT INTO info (kod_filmu, skrot) VALUES ('PF1994QT', '18+' INSERT INTO info (kod_filmu, skrot) VALUES ('OC1972FFC', '18+' INSERT INTO info (kod_filmu, skrot) VALUES ('OBC1994BS', '48fps' INSERT INTO info (kod_filmu, skrot) VALUES ('PZK2003GV', '3D' ('PF1994QT','Quentin Tarantino','Quentin Tarantino','John Travolta, Samuel L. Jackson, Bruce Willis, Uma Thurman' ('OC1972FFC','Francis Ford Coppola','Mario Puzo','Marlon Brando, Al Pacino, James Caan, Robert Duvall, Diane Keaton' ('OBC1994BS','Ben Stiller','Helen Childres','Winona Ryder, Ethan Hawke, Ben Stiller' ('PZK2003GV','Gore Verbinski','Ted Elliot','Johnny Depp, Orlando Bloom, Keira Knightley, Geoffrey Rush' (1,'PF1994QT',1,'2014-01-01','17:05:00','19:30:00' (2,'PF1994QT',1,'2014-01-01','19:45:00','22:20:00' (3,'PF1994QT',1,'2014-01-02','17:05:00','19:30:00' (4,'PF1994QT',1,'2014-01-02','19:45:00','22:20:00' (5,'OC1972FFC',2,'2014-01-01','17:05:00','19:30:00' (6,'OC1972FFC',2,'2014-01-01','19:45:00','22:20:00' (7,'OC1972FFC',2,'2014-01-02','17:05:00','19:30:00' (8,'OC1972FFC',2,'2014-01-02','19:45:00','22:20:00' (9,'OC1972FFC',2,'2014-01-03','17:05:00','19:30:00' (10,'OC1972FFC',2,'2014-01-03','19:45:00','22:20:00' (11,'OBC1994BS',3,'2014-01-01','17:05:00','19:30:00'

(12,'OBC1994BS',3,'2014-01-01','19:45:00','22:20:00' (13,'OBC1994BS',3,'2014-01-02','17:05:00','19:30:00' (14,'OBC1994BS',3,'2014-01-02','19:45:00','22:20:00' (15,'PZK2003GV',4,'2014-01-01','17:05:00','19:30:00' (16,'PZK2003GV',4,'2014-01-01','19:45:00','22:20:00' (17,'PZK2003GV',4,'2014-01-02','17:05:00','19:30:00' (18,'PZK2003GV',4,'2014-01-02','19:45:00','22:20:00' INSERT INTO sala (kod_sali,nr_sali,liczba_miejsc) VALUES ('S1',1,100 INSERT INTO sala (kod_sali,nr_sali,liczba_miejsc) VALUES ('S2',2,125 INSERT INTO sala (kod_sali,nr_sali,liczba_miejsc) VALUES ('S3',3,150 INSERT INTO sala (kod_sali,nr_sali,liczba_miejsc) VALUES ('S4',4,200 DROP TRIGGER IF EXISTS UpdateTrigger ON zarezerwowane_miejsca CASCADE; CREATE TRIGGER UpdateTrigger BEFORE INSERT OR UPDATE ON zarezerwowane_miejsca FOR EACH ROW EXECUTE PROCEDURE MyUpdate( CREATE OR REPLACE FUNCTION MyUpdate() RETURNS TRIGGER AS $$ DECLARE SalaMax INTEGER; BEGIN SELECT DISTINCT INTO SalaMax liczba_miejsc FROM sala NATURAL JOIN seans WHERE NEW.kod_seansu=seans.kod_seansu; IF (NEW.zarezerwowane_m>SalaMax) THEN RAISE EXCEPTION 'Nie ma wolnych miejsc na sali!'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; --INSERT INTO zarezerwowane_miejsca(kod_seansu,zarezerwowane_m) VALUES (1,250 import java.sql.*; public class KinoConnection Connection db; Statement stmt = null; IV. Kod Java GUI public String[] Select(String From) String[] wynik=new String[0]; String[] pomoc; int i=0; int l=0;

stmt = db.createstatement( catch(exception exc) if(from.equals("rodzaje")) "+From+";" ResultSet rs = stmt.executequery( "SELECT * FROM while ( rs.next() ) pomoc=new String[wynik.length+1]; for(l=0;l<wynik.length;l++) pomoc[l]=wynik[l]; wynik=new String[wynik.length+1]; for(l=0;l<wynik.length;l++) wynik[l]=pomoc[l]; String rodzaj = rs.getstring("rodzaj" //System.out.println( "Rodzaj = " + rodzaj wynik[i]= "Rodzaj = " + rodzaj; // System.out.println(wynik.length // System.out.println(wynik[i] i++; rs.close( stmt.close( catch(exception exc) return wynik; public void SetConnection() Class.forName("org.postgresql.Driver" db=drivermanager.getconnection("jdbc:postgresql://localhost:5432/kino", "postgres","tutaj HASLO" catch(exception exc) exc.printstacktrace( System.err.println(exc.getClass().getName()+": "+exc.getmessage() System.exit(0

import java.awt.*; import javax.swing.*; import java.awt.borderlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.windowadapter; import java.util.*; import static java.lang.math.*; import javax.swing.*; import java.awt.* ; import java.awt.event.* ; import java.applet.applet; import java.awt.event.keylistener; import java.awt.geom.affinetransform; import javax.swing.*; import java.awt.geom.*; import java.awt.*; import java.awt.event.componentevent; import java.awt.event.componentlistener; public class KinoGUI1 extends JFrame static KinoConnection MyConnection; static KinoGUI1 MyGui; JTextField insert = new JTextField(15 JTextArea display = new JTextArea( JButton SelectButton = new JButton("Select" int i; public KinoGUI1() //setlayout(new FlowLayout() add(insert,borderlayout.north add(selectbutton,borderlayout.south add(display,borderlayout.center event e = new event( SelectButton.addActionListener(e public class event implements ActionListener public void actionperformed(actionevent e) int length=myconnection.select(insert.gettext()).length; String[] Show = new String[length]; Show=MyConnection.Select(insert.getText() for(i=0;i<length;i++)

display.append(show[i] display.append("\n" //System.out.println(insert.getText() public static void main (String[] args) MyConnection = new KinoConnection( MyConnection.SetConnection( MyGui = new KinoGUI1( MyGui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE MyGui.setVisible(true MyGui.setTitle("Baza danych - Kino" MyGui.setSize(200,200 catch(exception exc) exc.printstacktrace( System.err.println(exc.getClass().getName()+": "+exc.getmessage() System.exit(0