Entity-Relationship Παραδείγματα

32
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου

description

Entity-Relationship Παραδείγματα. Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου. Επανάληψη. Επανάληψη. Παράδειγμα. Παράδειγμα. - PowerPoint PPT Presentation

Transcript of Entity-Relationship Παραδείγματα

Page 1: Entity-Relationship  Παραδείγματα

Entity-Relationship Παραδείγματα

Πληροφοριακά Συστήματα και Βάσεις Δεδομένων

Φροντιστήριο 1

Δαμιανός Χατζηαντωνίου

Page 2: Entity-Relationship  Παραδείγματα

Επανάληψη

Page 3: Entity-Relationship  Παραδείγματα

Επανάληψη

Page 4: Entity-Relationship  Παραδείγματα
Page 5: Entity-Relationship  Παραδείγματα
Page 6: Entity-Relationship  Παραδείγματα
Page 7: Entity-Relationship  Παραδείγματα
Page 8: Entity-Relationship  Παραδείγματα
Page 9: Entity-Relationship  Παραδείγματα
Page 10: Entity-Relationship  Παραδείγματα
Page 11: Entity-Relationship  Παραδείγματα
Page 12: Entity-Relationship  Παραδείγματα

Παράδειγμα

Page 13: Entity-Relationship  Παραδείγματα

Παράδειγμα

Σκεφτείτε μία εφαρμογή πώλησης βιβλίων (π.χ. amazon.com). Θέλουμε να μοντελοποιήσουμε το πρόβλημα αυτό χρησιμοποιώντας το μοντέλο Ο-Σ.

• Συγγραφείς βιβλίων (name, address, URL)

• Βιβλία (title, year, price, ISBN)

• Εκδοτικοί οίκοι (name, address, phone, URL)

• Πελάτες (name, address, email, phone)

• Αποθήκη βιβλίων (code, address, phone)

• Καλάθια αγορών (basketID)

Page 14: Entity-Relationship  Παραδείγματα

Λύση

Page 15: Entity-Relationship  Παραδείγματα
Page 16: Entity-Relationship  Παραδείγματα

Δυαδικές σε Τριαδικές

Page 17: Entity-Relationship  Παραδείγματα

Κληρονομικότητα

Page 18: Entity-Relationship  Παραδείγματα

Δημιουργία πίνακα

• Δημιουργία του πίνακα Students. Κάθε πεδίο ορίσμου δηλώνεται και επιβάλλεται από το ΣΔΒΔ κάθε φορά που εισάγουμε/ενημερώνουμε μία πλειάδα.

• Enrolled πίνακας: κρατάει πληροφορίες για τα μαθήματα ενός φοιτητή.

CREATE TABLE Students(sid: CHAR(20), name: CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL)

CREATE TABLE Enrolled(sid: CHAR(20), cid: CHAR(20), grade:

CHAR(2))

Page 19: Entity-Relationship  Παραδείγματα

Εισαγωγή/Διαγραφή

• Μπορούμε να εισάγουμε μία πλειάδα:

INSERT INTO Students (sid, name, login, age, gpa)VALUES (53688, ‘Smith’, ‘smith@ee’, 18, 3.2)

Διαγραφή πλειάδων που ικανοποιούν μία συνθήκη (e.g., name = Smith):

DELETE FROM Students SWHERE S.name = ‘Smith’

Page 20: Entity-Relationship  Παραδείγματα

Περιορισμοί ακεραιότητας

CREATE TABLE Enrolled (sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid) )

“For a given student and course, there is a single grade.” vs. “Students can take only one course, and receive a single grade for that course; further, no two students in a course receive the same grade.”

Used carelessly, an IC can prevent the storage of database instances that arise in practice!

CREATE TABLE Enrolled (sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid), UNIQUE (cid, grade) )

Page 21: Entity-Relationship  Παραδείγματα

Περιορισμοί ακεραιότητας• Μόνο φοιτητές του πίνακα Students επιτρέπεται

να εγγραφούν για μαθήματα.

CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid), FOREIGN KEY (sid) REFERENCES Students )

sid name login age gpa

53666 Jones jones@cs 18 3.453688 Smith smith@eecs 18 3.253650 Smith smith@math 19 3.8

sid cid grade53666 Carnatic101 C53666 Reggae203 B53650 Topology112 A53666 History105 B

EnrolledStudents

Page 22: Entity-Relationship  Παραδείγματα

Περιορισμοί ακεραιότητας

• Θεωρείστε τους πίνακες Students and Enrolled. Το sid στον Enrolled είναι ξένο κλειδί που αναφέρεται στον Students

• Τι θα γίνει αν μία γραμμή με ανύπαρκτο student id εισαχθεί στον Enrolled? (Reject it!)

• Τι θα γίνει αν μία γραμμή στον Students διαγραφεί?– Also delete all Enrolled tuples that refer to it.– Disallow deletion of a Students tuple that is referred to.– Set sid in Enrolled tuples that refer to it to a default sid.– (In SQL, also: Set sid in Enrolled tuples that refer to it to a special

value null, denoting `unknown’ or `inapplicable’.)

• Παρόμοια αν το primary key του Students ενημερωθεί

Page 23: Entity-Relationship  Παραδείγματα

Περιορισμοί ακεραιότητας• SQL/92 and SQL 1999

υποστηρίζουν όλα τα 4 options όταν έχουμε deletes και updates

– NO ACTION [default]

(delete/update is rejected)– CASCADE (also delete all

tuples that refer to deleted tuple)

– SET NULL / SET DEFAULT

(sets foreign key value of referencing tuple)

CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid), FOREIGN KEY (sid) REFERENCES Students

ON DELETE CASCADEON UPDATE SET DEFAULT )

Page 24: Entity-Relationship  Παραδείγματα

Άσκηση 3.8• Emp(eid:integer, ename:string, age:integer, salary: real)• Works(eid: integer, did: integer, pct_time: integer)• Dept(did: integer, dname: string, budget: real, managerid: integer)

Page 25: Entity-Relationship  Παραδείγματα

Λύση - 1

Page 26: Entity-Relationship  Παραδείγματα

Λύση - 2

Page 27: Entity-Relationship  Παραδείγματα

Λύση – 3,4,5

Page 28: Entity-Relationship  Παραδείγματα

Λύση - 6

DELETE

Page 29: Entity-Relationship  Παραδείγματα

Άσκηση 3.12 – Λύση

Page 30: Entity-Relationship  Παραδείγματα

Άσκηση 3.12 - Λύση

Page 31: Entity-Relationship  Παραδείγματα

Άσκηση 3.12 - Λύση

Page 32: Entity-Relationship  Παραδείγματα

Άσκηση 3.12 - Λύση