1
Plan voor Vandaag
Relationele Databases 2002/2003 • Praktische dingen Hoorcollege 3 24 april 2003
• Huiswerk ? 2.1, 2.3, 2.6 (alleen voor 2.2 en 2.3), 2.9, 2.10, 2.11, 2.14
Jaap Kamps & Maarten de Rijke April – Juli 2003
• SQL Aantekeningen 1 ? Tabellen; Eenvoudige Queries. • Theorie ? Silberschatz et al: hoofdstuk 3: Relationele Model (§3.1, §3.2).
2
3
Huishoudelijke Zaken
Huiswerk 2.1 Explain the distinctions among the terms primary key, candidate key, and superkey.
• Docenten: 1. Jaap Kamps, Email:
[email protected] 2. Maarten de Rijke, Email:
[email protected]
? Een superkey is een verzameling van ´e´en 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 ´e´en van de candidate keys die door de database ontwerper gekozen is als belangrijkste middel om entiteiten te identificeren binnen een entity set.
• 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
4
5
Huiswerk
Huiswerk
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.
Aannames:
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.
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.
Weak entity set test is afhankelijk van patient, discriminatory attributen zijn {test-name, date, time}.
6
Huiswerk 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.
7
Huiswerk 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.
8
9
Huiswerk
Huiswerk 2.6 Construct appropriate tables for each of the E-R diagrams in 2.2 and 2.3 [and 2.4].
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):
• 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)
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
Huiswerk
11
Huiswerk
2.9 Explain the difference between a weak and a strong entity set
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?
? 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 ´e´en groep worden onderscheiden met een discriminator of partial key.
? 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
Huiswerk
13
Huiswerk
2.11 Define the concept of aggregation. Give two examples of where this concept is useful.
2.11 Voorbeeld 1: Employees werken voor projecten. Een employee die voor ´e´en of ander project werkt gebruikt allerlei apparatuur.
? 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¨eren tussen een relatie en een entiteit.
14
Huiswerk 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.
15
Huiswerk 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
Huiswerk
17
Huiswerk
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
Database System Concepts — Hoofdstuk 3
19
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
22
23
Edgar Codd — Bedenker relationele model
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
Volgende Keer bij Relationele Databases • 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).
71
End!