540 likes | 914 Views
קורס מסדי נתונים ( Database Systems ). תירגול. מתרגל: ירון קנזה Course email: db@cs.huji.ac.il My email: yarok@cs.huji.ac.il Moderated Newsgroup: local.course.db.ta Students Newsgroup: local.course.db.stud. http://www.cs.huji.ac.il/~db. תרגילי בית. בקורס יינתנו כ-10 תרגילים
E N D
קורס מסדי נתונים (Database Systems)
תירגול • מתרגל: ירון קנזה • Course email: db@cs.huji.ac.il • My email: yarok@cs.huji.ac.il • Moderated Newsgroup: local.course.db.ta • Students Newsgroup: local.course.db.stud http://www.cs.huji.ac.il/~db
תרגילי בית • בקורס יינתנו כ-10 תרגילים • משקל התרגילים 30 – 15 אחוזים מן הציון הסופי • חובה להגיש את כל התרגילים • על כל הגשת תרגיל לכלול: שם, login ומספר סטודנט • הגשת תרגילים: • תרגילים בכתב יוגשו לתיבת הקורס ברוס 2- • תרגילי תכנות יוגשו אלקטרונית דרך אתר הקורס • החזרת תרגילים: ברוס 2- • קבלת ציון: אלקטרונית באתר הקורס
תרגילי בית • ערעורים: • יוגשו בכתב בטופס ערעורים לתיבת הקורס ברוס 2- • טופס ערעורים נמצא באתר הקורס • יוגשו תוך שבוע ממועד החזרת התרגיל הבדוק • דחיית מועד הגשת תרגיל: • בשל סיבה מוצדקת (מילואים, לידה וכד') • בצירוף אישורים מתאימים
ספרות עזר • Database Management Systems, by Raghu Ramakrishnan • Principles of Database and Knowledge-Base Systems, Volumes I and II, by Jeffery Ullman • Oracle 8i: The Complete Reference, by Kevin Loney and George Koch
מודל הישויות והקשרים Entity Relational Model
Database ERD המטרה: "התאמת העולם למודל" Requirement Analysis Conceptual Database Design Logical Database Design Relations Objects XML documents
מושגי יסוד • מודל הישויות והקשרים (Entity Relationship Model) • מאפשר לאפיין את העצמים ב"עולם", את הקשרים בין עצמים ותכונות של עצמים • דיאגרמת ישויות קשרים (Entity Relationship Diagram) • ייצוג גרפי, בדיאגרמה, של ה"עולם" כפי שהוא על פי מודל הישויות והקשרים
דוגמה – כיצד נתכנן את המסד? • בסיס נתונים של גלריה לאמנות כולל מידע על אמנים שעבודותיהם היו או נמצאות בגלריה (שם, כתובת, שנת לידה, סגנון אמנותי). • במערכת נשמר מידע על יצירות אמנות (מספר קטלוגי, שם היצירה, האמן היוצר, השנה שבה נוצרה היצירה, סוג העבודה – ציור, פסל, תחריט, צילום וכדומה). • היצירות מסווגות לקבוצות כגון: דיוקנאות, תמונות נוף, ציורים אימפרסיוניסטיים וכו'. יצירה עשויה להשתייך ליותר מקבוצה אחת. • במערכת נשמר מידע על לקוחות (שם, כתובת, יצירות שקנו, אמנים מועדפים וכו'). • בקניית יצירת אמנות נשמר במערכת מידע על תאריך הקניה והמחיר שבו נמכרה היצירה.
מושגי יסוד – המשך • ישות (entity) – עצם במערכת, לדוגמה האמן וינסנט ואן גוך, היצירה משמר הלילה וכו' • קבוצת ישויות או טיפוס ישויות (entity set) – הכללה של כל הישויות מסוג מסויים, לדוגמה אמנים, יצירות, לקוחות • קשר (relationship) – קשר בין שתי ישויות או יותר, לדוגמה רמברנדט יצר את משמר הלילה • קבוצת קשרים או טיפוס קשרים (relationship set) הכללה של כל הקשרים מסוג מסויים, לדוגמה יצר את (בין אמן ליצירה), קנה את (בין לקוח ליצירה)
מושגי יסוד – המשך • תכונה (attribute) – פריט מידע המתאר ישות או קשר, לדוגמה שנת לידה היא תכונה של אמן • לכל הישויות בקבוצת ישויות יש אותן תכונות (פרט ל-ISA בהמשך) • לכל קבוצת ישויות יש מפתח (יוגדר עוד מעט) • לתכונה ניתן לשייך תחום (domain) • תכונה מכילה פריט מידע יחיד ולא רשימה של פריטי מידע
כיצד מיוצגת ישות בדיאגרמה? כיצד מיוצג קשר? בדיאגרמת ERD • קבוצת ישויות מיוצגת בעזרת מלבן • קבוצת קשרים מיוצגת בעזרת מעויין • תכונה מיוצגת בעזרת אליפסה אמן יצר את יצר את יצירה אמן שם יצירה מספר קטלוגי מס זהות שם אמן
? ? ? של מי התכונה הזאת? • בקורס באוניברסיטה שומרים מידע על סטודנטים ועל תרגילי בית שהסטודנטים הגישו: כיצד נייצג ציוני תרגילים? ציון הגשה תרגיל סטודנט נושא מספר תרגיל מס זהות שם כיצד יבוטא במודל קשר הגשה? האם יתכן שתהיה סטודנטית שלא הגישה אף תרגיל?
מנוהל מנהל קבוצת קשרים רקורסיבית • מותר שבקשר ישתתפו שתי ישויות (או יותר) מאותו טיפוס • במקרה זה מוסיפים לקבוצת הקשרים בחיבור לטיפוסי הישויות את תיאור תפקיד (role) הישות בהשתתפות: מנהל של שם עובד עובד מספר זהות
קבוצת קשרים n-רית • עד כה ראינו קבוצות קשרים בינאריות • ניתן שבקשר ישתתפו שתי ישויות, שלוש ישויות, ארבע ישויות, ..., n ישויות שם מוסד מוסד לימד קורס מרצה שם קורס מספר קטלוגי מס זהות שם מרצה
קבוצת קשרים • פורמלית קבוצת קשרים תהיה {(e1, …, en) | e1E1, …, enEn} For E1, …, En entity sets • הישויות המשתתפות בקשר השייך לקבוצת קשרים מזהות את הקשר בקבוצה באופן ייחודי
האם השניים הבאים שקולים? שם מוסד מוסד לימד קורס מרצה שם קורס מספר קטלוגי מס זהות שם מרצה שם מוסד לימד ב ניתן ב מוסד לימד את קורס מרצה שם קורס מספר קטלוגי מס זהות שם מרצה
שנים ? רוצים לשמור באילו שנים בוצעה ההוראה? שם מוסד מוסד לימד קורס מרצה שם קורס מספר קטלוגי מס זהות שם מרצה
אילוצים (constraints) • מפתח (key) של קבוצת ישויות הוא קבוצה מינימלית של תכונות כך שהערכים בתכונות אלו מזהים באופן ייחודי את המופעים של קבוצת הישויות • יתכן שיהיה קיים יותר ממפתח מועמד אחד (candidate key) לטיפוס ישויות • אחד מן המפתחות המועמדים נבחר להיות המפתח הראשי (primary key) של קבוצת הישויות • המפתח הראשי מסומן על ידי קו תחתי בתכונותיו האם יש דמיון/שוני ביחס למפתח ראשי ב-SQL?
דוגמא מספר חשבון בנק חייל מספר זהות 1 שם בנק מספר אישי מספר חשבון בנק חייל מספר זהות 2 שם בנק מספר אישי מספר חשבון בנק חייל מספר זהות 3 שם בנק מספר אישי
אילוצים • אילוצי מפתח (key constraints) • אילוץ על השתתפות קבוצת ישויות בקבוצת קשרים • כשאין אילוץ, ישות עשויה להשתתף במספר קשרים מקבוצת הקשרים • האילוץ מחייב ישות להשתתף בלכל היותר קשר אחד מטיפוס הישויות • סימון בעזרת הוספת חץ לכיוון המעויין
יצירה יצר אמן יחיד לרבים (one-to-many) יצר את יצירה אמן שם יצירה מספר קטלוגי מס זהות שם אמן - אמן קשור להרבה יצירות - יצירה קשורה לאמן יחיד
יצירה שייכת קבוצה רבים לרבים (many-to-many) שייכת ל יצירה קבוצה שם יצירה מספר קטלוגי שם קבוצה תיאור • קבוצה יכולה להכיל • כמה יצירות • יצירה יכולה להיות • קשורה למספר קבוצות
גברים נישואין נשים יחיד ליחיד (one-to-one) נישואין גברים נשים שם מספר זהות מס זהות שם - גבר קשור לאשה יחידה - אשה קשורה לגבר יחיד
? ? ? אילוצי מפתח מספר זהות מוכר חברה שנת ייצור מכירה קונה מכונית מספר זהות מס רכב מודל הנחות: מוכר עשוי למכור כמה מכוניות, קונה עשוי לקנות כמה מכוניות, מכונית נמכרת פעם אחת בלבד
אילוצי השתתפות • אילוצי השתתפות (participation constraints) • אילוץ על השתתפות קבוצת ישויות בקבוצת קשרים • כשאין אילוץ, ישות עשויה לא להשתתף באף קשר מקבוצת הקשרים • האילוץ מחייב ישות להשתתף בלפחות קשר אחד מטיפוס הישויות • סימון בעזרת הדגשת הקו המחבר את המלבן למעויין
יצירה יצר אמן אילוצי השתתפות יצר את יצירה אמן שם יצירה מספר קטלוגי מס זהות שם אמן - אמן לא חייב להיות קשור ליצירה - יצירה חייבת להיות קשורה לאמן
ניתן לשלב אילוצי השתתפות עם אילוצי מפתח השתתפות חלקית והשתתפות מלאה השתתפות מלאה (total participation) השתתפות חלקית (partial participation) יצר את יצירה אמן שם יצירה מספר קטלוגי מס זהות שם אמן
מערכת המידע של הגלריה • כעת יש לנו את הכלים לייצר דיאגרמת ישויות קשרים לייצוג המידע הנדרש עבור גלריית האמנות • חשוב שבמערכת יהיה ייצוג לאילוצים הנדרשים
טיפוסי ישויות חלשים • טיפוסי ישויות חלשים (weak entity sets) הם טיפוסי ישויות שאין להם מפתח המורכב מהתכונות שלהם בלבד • לטיפוס ישויות חלש יש תלות זיהוי (identifying relationship set) בטיפוס ישויות שהוא הבעלים המזהה (identifying owner) של הטיפוס החלש • לטיפוס הישויות החלש השתתפות מלאה בתלות הזיהוי • סימון טיפוס הישויות החלש בעזרת הדגשת המלבן • סימון תלות הזיהוי בעזרת הדגשת המעויין
גדוד מספר גדוד שייכת ל פלוגה אות פלוגה פלוגה אות פלוגה שייכת ל שייכת ל מחלקה מחלקה מחלקה מספר מחלקה מספר מחלקה מספר מחלקה דוגמה מהם המפתחות הראשיים של קבוצות הישויות?
ספר מספר קטלוגי מופע של עותק מספר עותק דוגמאות נוספות קו נסיעה מספר קו כותרת ביצוע מספר אוטובוס השאלה נסיעה תאריך שעה
היררכית ISA • קשרי ISA מגדירים היררכיה בין קבוצות ישויות באופן שיוצר ירושה • ירושה על ידי הפרדה (specializing) • ירושה על ידי הכללה (generalizing) • סימון קשרי ISA בעזרת משולש שבתוכו המילה ISA
מהם המפתחות הראשיים של קבוצות הישויות? דוגמה רהיטים מספר קטלוגי מחיר ISA שידות שולחנות כסאות מספר מגירות גובה צבע ריפוד
תכונות של קשרי ISA • לרוב, מניחים שאין חפיפה בין קבוצות הישויות המוכללות בקשר ה-ISA • לדוגמא, האם יש כסא שהוא גם שולחן? • לרוב, מניחים שכל ישות מקבוצת הישויות המכלילה שייכת גם לפחות לאחת מקבוצות הישויות שמוכללות בקשר ה-ISA • לדוגמא, האם יש רהיט שאינו כסא, אינו שולחן ואינו שידה?
שימוש בקשרי ISA • נשתמש בהכללה של קבוצות ישויות • על מנת לייצג קבוצות ישויות שחלק מתכונותיהן, כולל המפתח הראשי, זהות וחלק שונות • על מנת לייצג קבוצות ישויות שזהות בתכונותיהן אך שונות בהשתתפותן בקבוצות הקשרים
דוגמה הורה אישה ילד הורות איש נישואין אנשים שם מספר זהות מה הבעיה בייצוג הזה?
המשך דוגמה מספר זהות שם אמהות אנשים אבהות ISA נשים גברים נישואין
דוגמה • במסגרת מחקר מנהלים בסיס נתונים לאחסון נתונים המתקבלים ממילוי שאלונים על ידי נחקרים המשתתפים במחקר • קבוצת הנחקרים היא קבועה, ושומרים על הנחקרים פרטים אישיים שונים • לא כל המשתתפים עונים על השאלונים, אולם נחקר עשוי לענות על כמה שאלונים שונים • בכל שאלון מספר שאלות ועל כל שאלה ניתן לענות או על ידי בחירה מתוך מספר תשובות נתון או על ידי דירוג מטווח נתון • במערכת נשמר גם המידע על השאלונים עצמם, המבנה שלהם, השאלות בשאלונים השונים וכו'
יצירת בסיס נתונים עבור המחקר • יוצרים דיאגרמת ישויות קשרים • מוסיפים אילוצים כנדרש • ממירים את הדיאגרמה לטבלאות כיצד ממירים דיאגרמה לטבלאות?
המרת קבוצות ישויות לטבלאות • כל תכונה של קבוצת הישויות מתורגמת לתכונה בטבלה address person name id person (id, name, address) CREATE TABLE person(id CHAR(11), name CHAR(30), address CHAR(40), PRIMARY KEY (id) )
המרת קבוצות קשרים לטבלאות • הטבלה עבור קבוצת קשרים מכילה את תכונות המפתחות הראשים של כל קבוצות הישויות שמשתתפות בקבוצת הקשרים, כל מפתח עם אילוץ מפתח זר (foreign key constraint) • הטבלה מכילה את התכונות של קבוצת הקשרים עצמה • המפתח הראשי נוצר מתכונות המפתח של קבוצות הישויות שמשתתפות בקבוצת הקשרים
owns address car person plate model name id since color owns (id, plate, since) CREATE TABLE owns( id CHAR(11), plate CHAR(10), since DATE, PRIMARY KEY (id, plate), FOREIGN KEY (id) REFERENCES person, FOREIGN KEY (plate) REFERENCES car )
owns address car person plate model name id since color owns (id, plate, since) CREATE TABLE owns( id CHAR(11) NOT NULL, plate CHAR(10), since DATE, PRIMARY KEY (plate), FOREIGN KEY (id) REFERENCES person, FOREIGN KEY (plate) REFERENCES car ) בנוסף, נדרש בטבלה car מפתח זר FOREIGN KEY (plate) REFERENCES owns מדוע?
owns address car person plate model name id since color אפשרות ב', בלא טבלת owns! CREATE TABLE car( model CHAR(20), plate CHAR(10) PRIMARY KEY, color CHAR(10), id CHAR(11) NOT NULL, since DATE NOT NULL, PRIMARY KEY (plate), FOREIGN KEY (id) REFERENCES person) מחברים את טבלת קבוצת הקשרים לטבלת קבוצת הישויות, מדוע זה ניתן?
to reference publisher books in title bno reference (in_bno, to_bno) CREATE TABLE reference( in_bno CHAR(20), to_bno CHAR(20), PRIMARY KEY (in_bno, to_bno), FOREIGN KEY (in_bno) REFERENCES books(bno) FOREIGN KEY (to_bno) REFERENCES books(bno) )
המרת קבוצת ישויות חלשה • המפתח של קבוצת הישויות החלשה כולל את המפתח הראשי של קבוצת הישויות שבה היא תלויה • קבוצת הישויות החלשה תמיד משתתפת השתתפות מלאה בתלות הזיהוי ועם אילוץ מפתח יחיד לרבים • ישנה "תלות קיום" של קבוצת הישויות החלשה בקבוצת הישויות שבה היא תלויה בתלות הזיהוי
exists publisher copies books cno title bno limitations copy (bno, cno, limitations) CREATE TABLE copies( bno CHAR(20), cno INTEGER, limitations CHAR(20), PRIMARY KEY (bno, cno), FOREIGN KEY (bno) REFERENCES books ON DELETE CASCADE ) כיצד באה לידי ביטוי תלות הקיום?
המרה של קבוצות ישויות מוכללות בקשרי ISA • ישנם שתי אלטרנטיבות: • המרה רגילה של קבוצת הישויות המכלילה והמרה של קבוצות הישויות המוכללות כאילו היו קבוצות ישויות חלשות (טבלת קבוצת ישויות מוכללת תכלול את המפתח הראשי של קבוצת הישויות המכלילה) • המרה רק של קבוצות הישויות המוכללות לטבלאות, כאשר הטבלה של קבוצת ישויות מוכללת כוללת את כל תכונות קבוצת הישויות המכלילה אותה
software cat_no company ISA free_software purchased_software site price support_info