1 Relationele Databases 2002/2003 Hoorcollege 3 24 april 2003 Jaap Kamps & Maarten de Rijke April Juli 2003 Plan voor Vandaag Praktische dingen 2.1, 2.3, 2.6 (alleen voor 2.2 en 2.3), 2.9, 2.10, 2.11, 2.14 SQL Aantekeningen 1 Tabellen; Eenvoudige Queries. Theorie Silberschatz et al: hoofdstuk 3: Relationele Model ( 3.1, 3.2). 2 3 Docenten: Huishoudelijke Zaken 1. Jaap Kamps, Email: kamps@science.uva.nl 2. Maarten de Rijke, Email: mdr@science.uva.nl URL voor de cursus: http://www.science.uva.nl/~kamps/rdb/, of http://www.science.uva.nl/~mdr/teaching/rdb/0203/ Practicum Deadline eerste inleveropdracht: 2 mei 2002 2.1 Explain the distinctions among the terms primary key, candidate key, and superkey. Een superkey is een verzameling van één of meer attributen die ons, samen, in staat stellen om een entiteit in een entity set te identificeren. Een superkey kan overbodige attributen bevatten: als K een superkey is, dan ook iedere uitbreiding van K. Een superkey waarvoor geen echte deelverzameling ook een superkey is, heet een candidate key. Er kunnen meerdere candidate keys zijn. De primary key is één van de candidate keys die door de database ontwerper gekozen is als belangrijkste middel om entiteiten te identificeren binnen een entity set. 4 5 2.3 Construct an E-R diagram for a hospital with a set of patients and a set of medical doctors. Associate with each patient a log of the various tests and examinations conducted. Aannames: Doctors behandelen meerdere patienten. Patienten kunnen meerdere doctors hebben. Patienten ondergaan geen, een of meer tests. Doctoren doen meerdere tests. Sommige tests worden door meerdere doctors afgenomen. Een afgenomen test hoort bij precies 1 patient. 2.3 Construct an E-R diagram for a hospital with a set of patients and a set of medical doctors. Associate with each patient a log of the various tests and examinations conducted. Entiteiten: patients, met attributen ss#, name, insurance, date-admitted, date-checked-out. doctors, met attributen dss#, name, specialization. test, met attributen test-name, date, time, result. Weak entity set test is afhankelijk van patient, discriminatory attributen zijn {test-name, date, time}. 6 7 2.3 Construct an E-R diagram for a hospital with a set of patients and a set of medical doctors. Associate with each patient a log of the various tests and examinations conducted. 2.3 Construct an E-R diagram for a hospital with a set of patients and a set of medical doctors. Associate with each patient a log of the various tests and examinations conducted. Relaties: Dr-Patient many-to-many tussen patients en doctors. performed-by many-to-many tussen test en doctors. test-log total, many-to-one van test naar patients.
8 9 2.6 Construct appropriate tables for each of the E-R diagrams in 2.2 and 2.3 [and 2.4]. Tabellen voor de auto verzekering (2.2) person(ss#,name,address) car(license,year,model) accident(report-number,location,date) owns(ss#,license) participated(license,report-number,ss#,damage-amount) 2.6 Construct appropriate tables for each of the E-R diagrams in 2.2 and 2.3 [and 2.4]. Tabellen voor het ziekenhuis (2.3): patients(ss#,name,insurance,date-admitted,date-checked-out) doctors(dss#,name,specialization) test(ss#,test-name, date,time,result) Dr-Patient(ss#,dss#) performed-by(ss#,test-name, date,time,dss#) Merk op: Er is geen tabel voor test-log want dat is een identificerende relatie van de weak entity set test. 10 11 2.9 Explain the difference between a weak and a strong entity set Een strong entity set (e.s.) heeft een primary key. Alle tuples in de verzameling kunnen mbv deze key geïdentificeerd worden. Een weak e.s. heeft alleen een primary key als attributen van de strong e.s. waarvan het afhangt, worden gebruikt. Tuples in een weak e.s. worden gegroepeerd aan de hand van hun relaties met tuples in een strong e.s.; tuples binnen één groep worden onderscheiden met een discriminator of partial key. 2.10 We can convert any weak e.s. to a strong e.s. by simply adding appropriate attributes. Why, then, do we have weak e.s. s? We willen data duplication door dupliceren van de key van een strong e.s. voorkomen Weak e.s. s geven de logische structuur weer van een entity die afhankelijk is van een andere entity. Weak e.s. s kunnen automatisch verwijderd worden als hun strong e.s. verwijderd wordt Weak e.s. s kunnen worden opgeslagen met hun strong e.s. s 12 13 2.11 Define the concept of aggregation. Give two examples of where this concept is useful. Definitie: Aggregatie is een abstractie waarmee relaties kunnen worden behandeld als (hoger-niveau) entiteiten. Merk op: Je kunt dus op deze manier een relatie definiëren tussen een relatie en een entiteit. 2.11 Voorbeeld 1: Employees werken voor projecten. Een employee die voor één of ander project werkt gebruikt allerlei apparatuur. 14 15 2.11 Voorbeeld 2: Producenten hebben overeenkomsten (tie-ups) met distributeurs voor het distribueren van producten. Voor elke tie-up specificeren we de verzamelingen van producten die gedistribueerd moeten worden. 2.14 Consider a university db for the scheduling of classrooms for final exams. The db could be modeled as the single e.s. exam with attributes course name, section-number, room-number, and time. Alternatively, one or more additional e.s. s could be defined, along with relationship sets to replace some of the attributes of the exam e.s. course (att: name, dept, c-number) section (att: s-number, enrollment), een weak e.s. afh. van course room (att: r-number, capacity, building)
16 17 2.14 (a) Show an E-R diagram illustrating the use of all three additional entity sets listed. 2.14 (b) Explain what application characteristics would influence a decision to include or not to include each of the additional entity sets De extra e.s. s zijn handig als we hun attributen ook willen opnemen: Voor de course e.s. hebben we 3 attributen. Het is niet aantrekkelijk om meerdere attributen van course als attributen van exam te hebben omdat het dan lastig kan zijn de gegevens over courses te onderhouden, vooral als een course geen exam heeft, of juist meerdere exams. Als we alleen de primary key op zouden nemen (c-number) en als courses maar 1 sectie hebben, dan zouden we course (en section) kunnen vervangen door een attribuut (c-number) by exam. Soortgelijke opmerkingen zijn van toepassing voor room. 18 19 Database System Concepts Hoofdstuk 3 Edgar Codd Bedenker relationele model Een begin maken met het relationele model Het relationele model is het gebruikte data model. Het geeft een simpele theoretische basis voor query talen. Het vormt de basis van de SQL query taal (H.4). Ruwweg 3.1 en 3.2 20 21 Edgar Codd Bedenker relationele model 22 23
24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63
64 65 66 67 68 69 Overzicht Vandaag Database System Concepts, Hoofdstuk 3. Relationele model ( 3.1 en 3.2). Opgaven: 2.1, 2.3, 2.6 (alleen voor 2.2 en 2.3), 2.9, 2.10, 2.11, 2.14 SQL Aantekeningen 1 Tabellen; Eenvoudige Queries. 70 71 Volgende Keer bij Relationele Databases End! Opgaven voor volgende keer (8 mei): 3.1 3.2 3.3 3.4 3.5 (alleen voor relatie algebra) SQL Aantekeningen 2 Relational model (Hoofdstuk 3), en begin SQL (Hoofdstuk 4).