Egzamin z baz danych 3 lutego 2012 Zadania i omówienie rozwi za«

Podobne dokumenty
Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

SIECI KOMPUTEROWE I BAZY DANYCH

Baza danych - Access. 2 Budowa bazy danych

Konstruowanie Baz Danych Wprowadzenie do projektowania. Normalizacja

Bazy danych. Plan wykładu. Zalenoci funkcyjne. Wykład 4: Relacyjny model danych - zalenoci funkcyjne. SQL - podzapytania A B

Wykład 8. SQL praca z tabelami 5

Chemoinformatyczne bazy danych - Wprowadzenie do technologii baz danych. Andrzej Bąk

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

Wykład 6. SQL praca z tabelami 3

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

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

Wykład 05 Bazy danych

Macierze. 1 Podstawowe denicje. 2 Rodzaje macierzy. Denicja

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

Bazy danych 2013/14. Egzamin. (5 pkt). Baza danych przechowuje w relacji binarnej G graf skierowany.

Wykład :45 BD-1 W_3

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Bazy danych 1. Wykład 6 Metodologia projektowania baz danych. (projektowanie logiczne - Normalizacja)

Autor: Joanna Karwowska

Projektowanie bazy danych

Widok Connections po utworzeniu połączenia. Obszar roboczy

x y x y x y x + y x y

1 Wstęp do modelu relacyjnego

Zadania z PM II A. Strojnowski str. 1. Zadania przygotowawcze z Podstaw Matematyki seria 2

Macierze i Wyznaczniki

System Zarządzania Relacyjną Bazą Danych (SZRBD) Microsoft Access 2010

Wykład 5. SQL praca z tabelami 2

Modelowanie wymiarów

Bazy danych - Materiały do laboratoriów VIII

Język SQL, zajęcia nr 1

Obliczenia arytmetyczne. Konkatenacja pól. Aliasy kolumn. Aliasy tabel. Co dalej? Rozdział 4. Korzystanie z funkcji. Zastosowanie funkcji

Paweł Rajba

Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.

ACESS- zadania z wykorzystaniem poleceń SQL

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Język SQL, zajęcia nr 2

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

Technologie baz danych

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Bazy danych. Andrzej Łachwa, UJ, /15

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Bazy danych. Plan wykáadu. Zale*noci funkcyjne. Wykáad 4: Relacyjny model danych - zale*noci funkcyjne. A B

Tworzenie modelu logicznego i fizycznego danych.

LAB 3 (część 1 Projektu)

Temat projektu: mpk-database

Bazy danych. Plan wykładu. Podstawy modeli relacyjnych. Diagramy ER. Wykład 3: Relacyjny model danych. SQL

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Bazy danych. dr inż. Arkadiusz Mirakowski

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

SIECI KOMPUTEROWE I BAZY DANYCH

Przykładowa baza danych BIBLIOTEKA

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

SIECI KOMPUTEROWE I BAZY DANYCH

Wykład 4. SQL praca z tabelami 1

API transakcyjne BitMarket.pl

Funkcje wielu zmiennych

Aspekty aktywne baz danych

Paweł Cieśla. Dokumentacja projektu

Bazy danych. Plan wykładu. Pierwsza posta normalna. Druga posta normalna. Wykład 7: Sprowadzanie do postaci normalnych. DDL, DML

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Model relacyjny. Wykład II

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

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

Twierdzenie Wainera. Marek Czarnecki. Warszawa, 3 lipca Wydziaª Filozoi i Socjologii Uniwersytet Warszawski

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Bazy Danych - Projekt. Zasady przygotowania i oceny projektów

Macierze i Wyznaczniki

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

2 Liczby rzeczywiste - cz. 2

3. (8 punktów) EGZAMIN MAGISTERSKI, Biomatematyka

PRZYPOMNIENIE Ka»d przestrze«wektorow V, o wymiarze dim V = n < nad ciaªem F mo»na jednoznacznie odwzorowa na przestrze«f n n-ek uporz dkowanych:

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

Technologie baz danych

XVII Warmi«sko-Mazurskie Zawody Matematyczne

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

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

W poprzednim odcinku... Podstawy matematyki dla informatyków. Relacje równowa»no±ci. Zbiór (typ) ilorazowy. Klasy abstrakcji

PLAN POŁĄCZENIA SPÓŁEK

Bazy danych. Dr inż. Paweł Kasprowski

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

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

Baza danych. Baza danych jest to zbiór danych powi zanych mi dzy sob pewnymi zale no ciami.

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

BAZA DANYCH SIECI HOTELI

1 Poj cia pomocnicze. Przykªad 1. A A d

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

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

Utwórz klucz podstawowy relacji na podstawie unikalnego identyfikatora encji. podstawie kluczy podstawowych wiązanych relacji.

1 Przypomnienie wiadomo±ci ze szkoªy ±redniej. Rozwi zywanie prostych równa«i nierówno±ci

1 Metody iteracyjne rozwi zywania równania f(x)=0

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

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

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

Transkrypt:

Egzamin z baz danych 3 lutego 202 Zadania i omówienie rozwi za«szymon Aceda«ski Zbigniew Jurkiewicz Paweª Kucharczyk Filip Murlak Oskar Skibski Krzysztof Stencel Instytut Informatyki Uniwersytet Warszawski Zadanie : Teoretyczne j zyki zapyta«rozwa»my relacj : Osoba(id,imi,nazwisko,pªe,id_osoby) // id jest kluczem, id > 0 Kolumna id_osoby zawiera identykator partnera danej osoby, przy czym liczba zero oznacza brak partnera. Rozwa»my zapytanie: SELECT o.imi, o2.imi FROM Osoba o OUTER JOIN Osoba o2 ON (o.id_osoby = o2.id) Zapisz to zapytanie w algebrze relacji lub w j zyku logiki pierwszego rz du. Warto±ci NULL reprezentuj staª napisow 'NULL'. Rozwi zanie (Szymon Aceda«ski) π o.imie,o2.imie (ρ o (Osoba) o.id_osoby=o2.id ρ o2 (Osoba)) { NULL o.imie } π o2.imie (σ o2.id_osoby=0(ρ o2 (Osoba))) π o.imie (σ o.id_osoby=0(ρ o (Osoba))) { NULL o2.imie } ρ α = ρ α.id/id,α.imie/imie,α.nazwisko/nazwisko,α.plec/plec,α.id_osoby/is_osoby Zadanie 2: Projektowanie baz danych Firma komunikacji autobusowej chce gromadzi dane o: Posiadanym taborze autobusowym, m.in. typ, numer rejestracyjny, liczba miejsc. Rozkªadzie jazdy, m.in. linia, sk d, dok d, czas odjazdu, czas przyjazdu, dni kursowania.

Kierowcach, m.in. nazwisko, imi, uprawnienia, adres, stawka za godzin. Rezerwacji biletów na poszczególne kursy. Baza ma sªu»y do rozliczania kierowców (tj. obliczania ich wynagrodzenia) i do optymalnego organizowania kursów autobusów. Kursy odbywaj si zgodnie z rozkªadem, s do nich dobierani kierowcy oraz autobusy zgodnie z rezerwacjami biletów. Je±li rezerwacji jest wi cej ni» miejsc w autobusie, to wyje»d»a wi cej ni» jeden pojazd zgodnie z zapotrzebowaniem i mo»liwo±ciami. Zaprojektuj dla takiej rmy baz danych w postaci normalnej Boyce'a-Codda. Narysuj diagram zwi zków-encji i podaj polecenia SQL tworz ce taka baz. Rozwi zanie (Zbigniew Jurkiewicz) Oto bazowe rozwi zanie. Mo»liwe jest rozmaite rozszerzanie tego. Wi kszo± sensownych rozszerze«i modykacji akceptowaªem, tj. oceniaªem pozytywnie. CREATE TABLE Kierowca ( prawojazdy CHAR(9) PRIMARY KEY, imie VARCHAR(20) NOT NULL, nazwisko VARCHAR(20) NOT NULL,... CREATE TABLE Uprawnienia ( kierowca CHAR(9) REFERENCES Kierowca, uprawnienie CHAR(2), PRIMARY KEY(kierowca, uprawnienie) CREATE TABLE Autobus ( nrrej CHAR(7) PRIMARY KEY, typ CHAR(2), liczbamiejsc INTEGER NOT NULL CHECK (liczbamiejsc > 0)... CREATE TABLE Rozklad ( linia INTEGER PRIMARY KEY, skad VARCHAR(20), dokad VARCHAR(20), odjazd TIME, przyjazd TIME CREATE TABLE DniLinii ( linia INTEGER REFERENCES Rozklad, dzien INTEGER NT NULL CHECK (dzien BETWEEN AND 7) PRIMARY KEY(linia, dzien) 2

CREATE TABLE Kurs ( id INTEGER PRIMARY KEY, linia INTEGER REFERENCES Rozklad, data DATE, ilerezerwacji INTEGER NOT NULL DEFAULT 0 CHECK (ilerezerwacji >= 0), UNIQUE(linia, data) CREATE TABLE PRZEJAZD ( kurs INTEGER REFERENCES Kurs, bus CHAR(7) REFERENCES Autobus, kierowca CHAR(9) REFERENCES Kierowca, PRIMARY KEY(kurs, bus, kierowca), UNIQUE(kurs,bus), UNIQUE(kurs,kierowca) 3

Uprawnienia uprawnienie kierowca * * kiedy posiada Kierowca prawojazdy imie nazwisko Przejazd kurs bus kierowca realizuje DniLinii linia dzien Rozklad linia skad dokad odjazd przyjazd * planowo Kurs id linia data ilerezerwacji Aut obus nrrej typ liczbamiejsc Diagram: drugie St rona Zadanie 3: Zale»no±ci funkcyjne Rozwa»my schemat relacji R(A, A 2,..., A n ) i permutacj p : {, 2,..., n} {, 2,..., n}. Wiemy, ze dla ka»dego k =, 2,..., n zachodzi zale»no± funkcyjna A k A p(k). Te n zale»no±ci funkcyjnych stanowi reprezentacj wszystkich zale»no±ci funkcyjnych zachodz cych w tej tabeli. Okre±li liczb kluczy tej relacji zale»nie od wªa±ciwo±ci permutacji p. 4

Rozwi zanie (Oskar Skibski) Przedstawmy permutacje ρ w postaci cyklowej: ρ = (x, ρ(x ),..., ρ c (x ))(x 2, ρ(x 2 ),..., ρ c 2 (x 2 ))... (x k, ρ(x k ),..., ρ c k (x k )). Powy»sza permutacja skªada si zatem z k cykli o dªugo±ciach c, c 2,..., c k. Niech ρ i (x a ) b dzie dowolnym elementem. Skorzystajmy z wªa±ciwo±ci rozkªadu: z denicji cyklu wiemy,»e dla dowolnego innego elementu z tego cyklu ρ j (x a ) zachodzi ρ (ca+j i) (ρ i (x a )) = ρ j (x a z rozª czno±ci cyklów wiemy,»e dla dowolnego elementu innego cyklu ρ j (x b ) nie istnieje takie m,»e ρ m (ρ i (x a )) = ρ j (x b ). Przekªadaj c powy»sze uwagi na j zyk zale»no±ci funkcyjnych otrzymujemy,»e do domkni cia dowolnego atrybutu wzgl dem zbioru zale»no±ci funkcyjnych nale» wszystkie atrybuty tworz ce z nim cykl i nic poza tym: (A ρi (x a )) + = {A xa, A ρ(xa ),..., A ρ ca (x a )}. Do dowolnego nadklucza nale»e musi zatem co najmniej jeden element z ka»- dego cyklu (inaczej nie uzyskamy elementów tego cyklu), a aby nadklucz ten byª kluczem nie mo»e si w nim znajdowa wi cej ni» jeden taki atrybut (s one bowiem równowa»ne). Liczba kluczy jest zatem równa k i= c i na tyle sposobów mo»emy wybra po jednym elemencie z ka»dego cyklu. Zadanie 4: Wykonywanie zapyta«dla nast puj cego schematu tabel (nigdzie nie ma warto±ci NULL): Emp(id, name, hiredate) // id jest kluczem Order(id, date, discount, eid) // id jest kluczem, // eid to klucz obcy do Emp Detail(oid, pos, product, amount, price) // (oid, pos) jest kluczem, // oid to klucz obcy do Order Tabele te zawieraj odpowiednio 0 4, 0 6 i 0 8 krotek. Na kluczach gªównych s pozakªadane pogrupowane B+drzewa. Innych indeksów nie ma. Okre±li mo»liwie najlepszy plan wykonania zapytania: SELECT e.id, sum(d.amount * d.price) FROM Emp e, Order o, Detail d WHERE e.id = o.eid AND o.id = d.oid GROUP BY e.id; Wzór rozwi zania (Paweª Kucharczyk) Po pierwsze nale»y zauwa»y,»e nie ma potrzeby korzystania z tabeli Emp. Order.eid jest kluczem obcym do Emp.id. Zª czenie w zapytaniu jest zª czeniem wewn trznym i jako takie nie uwzgl dni pracowników, którzy nie maj»adnego zamówienia. 5

Dzi ki obecno±ci pogrupowanych B+drzew na Detail i Order wystarczy w celu obliczenia zapytania przej± ka»d z tabel (wedªug tych indeksów) raz.. Przy przechodzeniu przez Detail obliczamy sum amount * price - warto± zamówienia. 2. Przej±cie przez tabel Order jest potrzebne, aby odczyta Order.eid. 3. Order.eid jest potrzebne, aby sum obliczon w pkt. doda do innych zamówie«danego pracownika - w tym celu zakªadamy map /pohashowan tabel. 4. Taka tabela b dzie zawieraªa 0 4 liczb, wi c raczej nie ma niebezpiecze«- stwa,»e nie zmie±ci si w RAMie. Po przej±ciu przez caª tabel Detail tabela z pkt. 3 zawiera wynik zapytania. Uwagi: rozwi zania gdzie wynik z pkt. 3 byª zbierany nie w RAMie tylko jako tabela po±rednia na dysku te» byªy akceptowane. za wykonanie zª czenia z tabel Emp byªy obcinane punkty (ale nie du»o). rozpocz cie zª cze«od tabeli Emp byªo traktowane jako niedobry (nieoptymalny) plan wykonania zapytania. Ewentualne punkty przydzielane w takiej sytuacji zale»aªy od tego czy opisany plan w ogóle dziaªaª Zadanie 5: SQL Dla schematu tabel jak w zadaniu 4 napisa zapytanie SQL znajduj ce identy- kator i nazwisko ka»dego takiego pracownika, który obsªu»yª co najmniej 0 zamówie«oraz w ka»dym jego zamówieniu najta«sza pozycja tego zamówienia (tj. iloczyn amount * price) jest nie mniejsza ni» 50% najdro»szej pozycji. Rozwi zanie (Filip Murlak) SELECT Emp.id, Emp.name FROM Emp, Order WHERE Emp.id = Order.eid AND Emp.id NOT IN (SELECT o.eid FROM Order o, Detail d WHERE o.id = d.oid GROUP BY o.eid, o.id HAVING 0.5 * MAX(d.amount * d.price) > 2 * MIN(d.amount * d.price)) GROUP BY Emp.id, Emp.name HAVING COUNT(Order.id) >= 0; 6