Databases: An Introduction

Slides:



Advertisements
Similar presentations
Introduction to Databases Transparencies
Advertisements

SLIDE 1IS Fall 2002 Database Management: Discussion Session University of California, Berkeley School of Information Management and.
CS34311 The Entity- Relationship Model Part II.. CS34312 Database Design Stages Application Requirements Conceptual Design Logical Design Physical Design.
1 Chapter 2 Database Environment. 2 Objectives of Three-Level Architecture u All users should be able to access same data u User’s view immune to changes.
Introduction to Data bases concepts
1 Introduction to databases concepts CCIS – IS department Level 4.
Database Technical Session By: Prof. Adarsh Patel.
Database Organization and Design
1 Chapter 1 Introduction. 2 Introduction n Definition A database management system (DBMS) is a general-purpose software system that facilitates the process.
Unit 3 Conceptual Data Modeling. Key Concepts Conceptual data modeling process Classes and objects Attributes Identifiers, candidate keys, and primary.
Domain Modeling Part2: Domain Class Diagram Chapter 4 pp part 2 1.
Lecture # 3 & 4 Chapter # 2 Database System Concepts and Architecture Muhammad Emran Database Systems 1.
INTRODUCTION TO DBS Database: a collection of data describing the activities of one or more related organizations DBMS: software designed to assist in.
1 Database Environment. 2 Objectives of Three-Level Architecture u All users should be able to access same data. u A user’s view is immune to changes.
Database Environment CPSC 356 Database Ellen Walker Hiram College.
CS-508 Databases and Data Mining By Dr. Noman Hasany.
 Database – collection of persistent data  Database Management System (DBMS) – software system that supports creation, population, and querying of a.
COP Introduction to Database Structures
ERwin.
Introduction to Databases Transparencies
CS 325 Spring ‘09 Chapter 1 Goals:
國立臺北科技大學 課程:資料庫系統 Chapter 2 Database Environment.
REV 00 Chapter 2 Database Environment DDC DATABASE SYSTEM.
REV 00 Chapter 2 Database Environment DDC DATABASE SYSTEM.
Database Management.
Datab ase Systems Week 1 by Zohaib Jan.
Chapter 2 Database Environment.
MODELS OF DATABASE AND DATABASE DESIGN
Introduction to Databases Transparencies
Introduction to Databases
Introduction to Databases
Chapter 4 Relational Databases
The Entity-Relationship Model
Modeling Your Data Chapter 2 cs542
Introduction to Relational Databases
UML UML Data Modeling.
Instructor: Elke Rundensteiner
Chapter 2 Database Environment.
UML UML to Relations.
Introduction to Database Management System
From ER to Relational Model
Chapter 2 Database Environment Pearson Education © 2009.
Order Database – ER Diagram
Data Base System Lecture : Database Environment
Database.
File Systems and Databases
מודל הנתונים.
Databases: An Introduction
The Entity-Relationship Model
LECTURE 34: Database Introduction
Database solutions Database environment Marzena Nowakowska Faculty of Management and Computer Modelling Kielce University of Technology rooms: 3.21 C,
الفصل الخامس قواعد البيانات Databases
Introduction to Databases
בסיסי נתונים - מצגת ההרצאה - 1.
מודל היחסים The Relational Model.
UML UML to Relations.
Database Management Systems
Data Model.
Database Systems Instructor Name: Lecture-3.
Introduction to Databases
CS4433 Database Systems Midterm Review.
Introduction to Databases Transparencies
Chapter 2 Database Environment Pearson Education © 2014.
Software Analysis.
Introduction to Database Systems
Question 1: Basic Concepts (45 %)
Chapter 2 Database Environment Pearson Education © 2009.
LECTURE 33: Database Introduction
Chapter 2 Database Environment Pearson Education © 2009.
Chapter 3 The Relational Model
Presentation transcript:

Databases: An Introduction מסדי נתונים: הקדמה Databases: An Introduction

מושגי יסוד: מסד נתונים מערכת לניהול מסדי נתונים מושגי יסוד: מסד נתונים מערכת לניהול מסדי נתונים גם קצת היסטוריה ואנקדוטות

מהו מסד נתונים? מסד נתונים הנו אוסף של נתונים שמנוהל בעזרת כלי תוכנה הנקראים מערכת לניהול מסדי נתונים, ובאנגלית Database Management System (DBMS) בעבר הרחוק כלי תוכנה אלה היו לא יותר מאשר מערכת קבצים משופרת כיום הכלים הרבה יותר משוכללים

קצת היסטוריה מחשבים הומצאו מתוך צורך לבצע חישובים מדעיים והנדסיים אבל הדחיפה הגדולה בשנות החמישים והשישים לפיתוח ולהרחבת השימוש במחשבים נבעה מהצורך לעבד כמויות גדלות והולכות של נתונים כך גם בשנות השמונים – הדחיפה הגדולה ל-PC נבעה מאפליקציות של משרד ממוחשב, כולל עיבוד נתונים (למשל, spreadsheets)

אנקדוטה י.ב.מ., שהפכה לחברה הגדולה למחשבים, הייתה חברה למכונות משרדיות הלקוחות הגדולים שלה (חברות ביטוח, בנקים וכד') באו בראשית שנות החמישים ואמרו שיותר אינם יכולים לבצע עיבוד נתונים בצורה ידנית, לפיכך החליטה י.ב.מ. להיכנס לתחום המחשוב

ומה עם הכסף? האיש השני הכי עשיר בעולם (לפחות בתחום המחשבים) הנו לארי אליסון, האיש שהקים את חברת אורקל אורקל הוקמה בסוף שנות השבעים והמוצר שלה התבסס למעשה על רעיונות שפותחו במעבדות המחקר של י.ב.מ. (אז לא היה מקובל להגן על רעיונות בתחום התוכנה ע"י פטנטים)

מה כולל DBMS?

התמונה הכללית DBMS – אוסף של כלי תוכנה לעיבוד וניהול הנתונים של מספר מסדי נתונים שונים מסד נתונים – אוסף נתונים בעלי מבנה לוגי ומבנה פיסי מסד נתונים נוסף אם תוכנית כותבת נתונים לתוך מסד נתונים, אזי הנתונים נשמרים במסד (על הדיסק) גם אחרי שהתוכנית סיימה לרוץ

מהו DBMS? מערכת לניהול מסדי נתונים מערכת תוכנה לבניית מספר מסדי נתונים שונים (נתונים + אפליקציות), שמאפשרת להגדיר בצורה קלה את המבנה של הנתונים מבנה לוגי – מהי משמעות הנתונים? מה הם מיצגים? מבנה פיסי – איך הנתונים מאורגנים בקבצים? לשלוף נתונים בקלות ע"י שפת שאילתות כמו כן, קיימים כלים נוספים לעיבוד נתונים

מהו DBMS? (המשך): כלים נוספים מאפשרים לבצע פעולות בו-זמנית (במקביל) הזמנת מקומות לטיסה ע"י מספר אנשים באותו הזמן לבצע גיבוי והתאוששות (backup & recovery) היכולת לשחזר נתונים במקרה של נפילה לשמור על שלמות הנתונים (data integrity) היכולת לקיים אילוצים, כגון אי אפשר לקחת שני קורסים דומים אין קורס שלא שייך לאף חוג ציון הוא תמיד מספר בין 0 ל- 100 לשמור על סודיות הנתונים (security) ע"י מתן הרשאות מתאימות (authorization)

מודל הנתונים סכמה פיסית סכמה לוגית רמות הפשטה מושגים נוספים מודל הנתונים סכמה פיסית סכמה לוגית רמות הפשטה

מודל הנתונים מודל הנתונים הוא אוסף של מושגים שמאפשרים לנו לתאר באופן פורמלי את הנתונים ואת משמעותם (קרי, הסמנטיקה של הנתונים) מבדילים בין מבנה הנתונים לבין הנתונים עצמם סכמה מתארת את מבנה הנתונים למעשה קיימות שתי סכמות: פיסית ולוגית מודל הנתונים מתייחס לסכמה הלוגית המודל הנפוץ ביותר הנו המודל היחסי (המודל הרלציוני או Relational Model)

סכמה פיסית הסכמה הפיסית מתארת את הארגון הפיסי של הנתונים קבצי הנתונים ארגון הנתונים על הדיסק אינדקסים למשל, אינדקס (עץ חיפוש או ערבול (hashing)) על מספר הזהות, שמאפשר לשלוף במהירות רשומה של סטודנט לפי מספר הזהות

סכמה לוגית הסכמה הלוגית מתארת את הסמנטיקה (קרי, משמעות הנתונים) או במילים אחרות, מה הנתונים מיצגים, לדוגמה הנתונים מיצגים סטודנטים, חוגים, קורסים, מורים וכד' סטודנט מורכב ממספר זהות, כתובת וכד' יש קשר בין סטודנט לבין הקורסים שלו יש קשר בין סטודנט לבין החוגים שלו

רמות הפשטה Levels of Abstraction קימות למעשה שלוש רמות של הפשטה סכמה פיסית (Physical Schema) סכמה מושגית (Conceptual Schema) זוהי סכמה לוגית של כל הנתונים מבטים (Views) אלה סכמות לוגיות, שכל אחת מהן מייצגת חלק מהנתונים ונועדה לשרת אפליקציות מסוימות

Levels of Abstraction כל מבט (View) מתאר כיצד קבוצת משתמשים מסוימת רואה את הנתונים כלומר, כל אפליקציה (תוכנית) נכתבת ביחס למבט מסוים ולא ביחס לסכמה המושגית View 1 View 2 View 3 Conceptual Schema Physical Schema לדוגמה, אפליקציה שמדפיסה גיליון ציונים של סטודנט תרוץ מעל מבט שכולל רק את הנתונים על סטודנטים וקורסים ואינו כולל את נתוני השכר של עובדי האוניברסיטה . 6

הקשר בין רמות ההפשטה הסכמה הפיסית והסכמה המושגית מוגדרות בעזרת שפה מתאימה, הנקראת Data Definition Language (DDL) המבטים מוגדרים ב- SQL (במודל היחסי) ההגדרות של הרמות השונות כוללות למעשה גם את המיפוי של כל רמה לרמה שמתחתיה

מדוע צריך מספר רמות הפשטה ? קיומן של שלוש רמות הפשטה מאפשר להשיג את אי תלות הנתונים (Data Independence) אי תלות הנתונים פירושה ששינויים המבוצעים ברמה אחת לא משפיעים על הרמה שמעליה או מתחתיה (מספיק להגדיר מחדש את המיפוי בין הרמות) לדוגמה, הוספת אינדקס (לצורך שליפה מהירה של נתונים) אינה מצריכה לכתוב מחדש שאילתות

לסיכום – מערכת לניהול מסדי נתונים מספקת: לסיכום – מערכת לניהול מסדי נתונים מספקת: מודל נתונים שכולל שלוש רמות הפשטה שפת שאילתות וכלים נוספים לשליפת ועיבוד נתונים אפשרות לבצע פעולות ("עסקות") בו-זמנית גיבוי והתאוששות (backup & recovery) שלמות הנתונים (data integrity) אבטחת מידע (data security) והרשאות (authorization) רמת ההפשטה של המבטים (views) מאפשרת לבצע הרשאות

The Relational Model Briefly המודל היחסי בקיצור The Relational Model Briefly

יחס הנו למעשה טבלה נוח לייצג נתונים בטבלה מסד נתונים מורכב ממספר טבלאות לדוגמה, הטבלה הבאה מכילה נתונים לגבי מספר סטודנט, שם סטודנט ושנת הלימודים של הסטודנט שורה בטבלה נקראת רשומה year sname sid 3 white 240 jones 202 1 adams 450 שם של עמודה נקרא אטריביוט

היבט פורמלי (מתמטי) רשומה הנה למעשה n-יה של ערכים (240,white,3) ≠ (white,240,3) אבל ביחסים יש שמות לעמודות ולכן הרשומות הבאות שוות זו לזו year sid sname 3 240 white year sname sid 3 white 240 =

מבנה לוגי (קרי, סכמה לוגית) לעומת נתונים האטריביוטים (קרי, העמודות) מייצגים את המבנה הלוגי של הטבלה, שנשאר קבוע (או משתנה לעיתים רחוקות) הנתונים הנם אודות מס' סטודנט, שם סטודנט ושנת הלימודים של הסטודנט הרשומות מכילות נתונים שמשתנים עם הזמן רשומות חדשות מתווספות רשומות קיימות נמחקות או מתעדכנות

הסכמה הלוגית של יחס – הגדרה פורמלית הסכמה הלוגית של יחס היא קבוצת האטריביוטים (שמות העמודות) של היחס הסכמה הלוגית של היחס הקודם היא {sid, sname, year} סכמה היא קבוצה, כי הסדר של העמודות אינו חשוב ואין שתי עמודות עם אותו שם year sname sid 3 white 240 jones 202 1 adams 450

באופן מעשי הסכמה הלוגית של יחס כוללת דברים נוספים ההגדרה הפורמלית של סכמה לוגית מהשקף הקודם תשמש אותנו בדרך כלל כשנדון בנושאים תיאורטיים באופן מעשי (קרי, כשמגדירים סכמה לוגית של יחס במערכת לניהול מסדי נתונים), הסכמה הלוגית של יחס כוללת פרטים נוספים, כגון ה- type של כל אטריביוט שם היחס (הכרחי אם יש שני יחסים שונים עם אותם אטריביוטים) אילוצים שהיחס מקיים

מהי הסכמה הפיסית של יחס? הסכמה הפיסית של יחס כוללת פרטים לגבי מבנה הנתונים (data structure) של היחס לדוגמה, היחס מאוחסן בקובץ מסוג B+-tree, כאשר הגישה לכל רשומה היא לפי מספר סטודנט אפשרות אחרת היא שהיחס מאוחסן בקובץ ערבול (hashing) הסכמה הפיסית כוללת גם פרטים נוספים למשל, יש אינדקס על שם סטודנט, שמאפשר לשלוף במהירות רשומה לפי שם הסטודנט

An Introduction to Schema Design מבוא לתכנון סכמות An Introduction to Schema Design

כאשר בונים מסד נתונים חדש, צריך לתכנן את הסכמה הלוגית תכנון טוב של הסכמה הלוגית מאפשר לאחסן בצורה נכונה ומלאה את כל הנתונים הרלבנטיים לצורך כתיבת שאילתות ואפליקציות לתכנן את הסכמה הפיסית תכנון טוב של הסכמה הפיסית מאפשר ביצועים אופטימליים של שאילתות ואפליקציות לכתוב שאילתות ואפליקציות בהתאם לצרכים (למשל, הכנת תלוש משכורת)

חשוב לציין מספר דברים יחסית לקצב שבו משתנים הנתונים, הסכמה הלוגית והסכמה הפיסית הנן קבועות (או משתנות לעיתים רחוקות) לפיכך, לתכנון הסכמה הלוגית והסכמה הפיסית יש השפעה לטווח ארוך לעיתים מדברים על "סכמה" ללא ציון מפורש של "לוגית" או "פיסית" – הכוונה היא לסכמה הלוגית (ובמקרים מסוימים לשילוב של שתיהן) הכוונה צריכה להיות ברורה מההקשר

גישות שונות לתכנון סכמות קיימת שיטה לתכנון ישיר של סכמות עבור מסדי נתונים יחסיים (על כך נדבר בהמשך) גישה אחרת היא לתכנן תחילה סכמה במודל שהוא עשיר יותר (מבחינת מרכיביו) מהמודל היחסי ואחר כך לתרגם סכמה זו למודל היחסי אם נוקטים בגישה השניה, אפשר גם לתרגם את הסכמה הראשונית לסכמות במודלים אחרים (לדוגמה, מודל נתונים מונחה עצמים)

תכנון מערכות תוכנה (ולא רק סכמות) מצריך מודל פורמלי לתיאור העולם הממשי המודל הפורמלי מתאר את החלק של העולם הממשי המיוצג במערכת תוכנה לדוגמה, "העולם האוניברסיטאי" כולל סטודנטים מרצים קורסים חוגי לימוד עובדי מנהל תקציבי מחקר ועוד...

The Entity-Relationship Model מודל הישויות והקשרים The Entity-Relationship Model

מודל הישות והקשרים Entity-Relationship Model מודל הישויות והקשרים הנו מודל פורמלי לתיאור העולם הממשי, שמקורו בתחום מסדי הנתונים מודל הישויות והקשרים משמש כמודל פורמלי לתיאור העולם הממשי גם בתחומים אחרים בינה מלאכותית תכנון מערכות תוכנה מונחות עצמים

הערות כיום עוברים למודל עשיר יותר, שנקרא UML (Universal Modeling Language) סכמה לוגית שתוכננה במודל הישויות והקשרים ניתנת לתרגום למודל היחסי או למודלים אחרים, למשל מודל נתונים מונחה עצמים במודל מונחה עצמים צריך לקבוע את המחלקות (classes) ואת ההירארכיות הבאות: ISA Hierarchy (Inheritance Hierarchy) Aggregation (or Composition) Hierarchy

מבט כולל על מודל הישויות והקשרים מבט כולל על מודל הישויות והקשרים העולם מורכב מישויות ומקשרים בין הישויות דוגמה לישויות: - סטודנטים - קורסים - מרצים - חוגי לימוד דוגמה לקשרים: - קשר בין קורסים לסטודנטים - קשר בין קורסים למרצים - קשר בין קורסים לחוגי לימוד

ישויות Entities

ישות וקבוצת ישויות Entity and Entity Set ישות היא דבר שקיים בעולם ושיש לו תכונות לדוגמה, סטודנט הוא ישות בעלת התכונות שם, כתובת, תאריך לידה, שם האב, מספר זהות וכד' כל ישות ניתנת לזיהוי באופן אחד ויחיד בהינתן ערכים עבור תכונה או תכונות מסוימות, לדוגמה סטודנט מזוהה (קרוב לודאי) ע"י שם, תאריך לידה ושם האב עדיף לזהות סטודנט ע"י מס' זהות (או מס' סטודנט) כל הישויות מאותו סוג נמצאות בקבוצת ישויות אחת לדוגמה, קבוצת הישויות של הסטודנטים

ישות וקבוצת ישויות Entity and Entity Set האם חוג לימודים הוא תכונה של סטודנט או ישות בפני עצמה? ישות וקבוצת ישויות Entity and Entity Set ישות היא דבר שקיים בעולם ושיש לו תכונות לדוגמה, סטודנט הוא ישות בעלת התכונות שם, כתובת, תאריך לידה, שם האב, מספר זהות וכד' כל ישות ניתנת לזיהוי באופן אחד ויחיד בהינתן ערכים עבור תכונה או תכונות מסוימות, לדוגמה סטודנט מזוהה (קרוב לודאי) ע"י שם, תאריך לידה ושם האב עדיף לזהות סטודנט ע"י מס' זהות (או מס' סטודנט) כל הישויות מאותו סוג נמצאות בקבוצת ישויות אחת לדוגמה, קבוצת הישויות של הסטודנטים

ייצוג ישויות ע"י רשומות ניתן לייצג ישות ע"י רשומה, לדוגמה ישות: סטודנט שם: "יוסף לוי" כתובת: "שדרות הרצל 107 ירושלים" תאריך לידה: "7.8.78" שם האב: "יעקב" מספר זהות: "1673040" ייצוג: (יוסף לוי, שדרות הרצל 107 ירושלים, 7.8.78, יעקב, 1673040)

ייצוג ישויות ע"י רשומות קבוצת כל הישויות מאותו הסוג היא למעשה יחס ניתן לייצג ישות ע"י רשומה, לדוגמה ישות: סטודנט שם: "יוסף לוי" כתובת: "שדרות הרצל 107 ירושלים" תאריך לידה: "7.8.78" שם האב: "יעקב" מספר זהות: "1673040" ייצוג: (יוסף לוי, שדרות הרצל 107 ירושלים, 7.8.78, יעקב, 1673040)

מפתח (Key) של ישות תכונה או קבוצת תכונות שמזהה ישות באופן אחד ויחיד נקראת מפתח (Key) לדוגמה, מס' סטודנט הוא מפתח של סטודנט מספר קורס הוא מפתח של קורס, אבל שם של קורס אינו מפתח, כי יכולים להיות שני קורסים שונים (במחלקות שונות) עם אותו שם

קשרים Relationships

קשר וקבוצת קשרים Relationship & Relationship Set בין מספר כלשהו של ישויות יכול להתקיים קשר, לדוגמה הסטודנט "משה כהן" לוקח את הקורס "מערכות הפעלה" שמלמד המרצה "אמנון ברק" זהו קשר משולש, קרי בין שלוש ישויות דוגמה לקשרים בינאריים: הסטודנט "משה כהן" לוקח את הקורס "מערכות הפעלה" המרצה "אמנון ברק" מלמד את הקורס "מערכות הפעלה" כל הקשרים מאותו סוג נמצאים בקבוצה אחת

קשר וקבוצת קשרים Relationship & Relationship Set מה מתאים יותר לעולם שאנו רוצים לייצג – קשר משולש אחד או שני קשרים בינאריים? אולי צריך את כל שלושת הקשרים? קשר וקבוצת קשרים Relationship & Relationship Set בין מספר כלשהו של ישויות יכול להתקיים קשר, לדוגמה הסטודנט "משה כהן" לוקח את הקורס "מערכות הפעלה" שמלמד המרצה "אמנון ברק" זהו קשר משולש, קרי בין שלוש ישויות דוגמה לקשרים בינאריים: הסטודנט "משה כהן" לוקח את הקורס "מערכות הפעלה" המרצה "אמנון ברק" מלמד את הקורס "מערכות הפעלה" כל הקשרים מאותו סוג נמצאים בקבוצה אחת

ייצוג קשרים ע"י רשומות ניתן לייצג קשר ע"י רשומה, לדוגמה הקשר: הסטודנט "משה כהן" לוקח את הקורס "מערכות הפעלה" שמלמד המרצה "אמנון ברק" הייצוג: (משה כהן, מערכות הפעלה, אמנון ברק) הקשר: הסטודנט "משה כהן" לוקח את הקורס "מערכות הפעלה" הייצוג: (משה כהן, מערכות הפעלה) הקשר: המרצה "אמנון ברק" מלמד את הקורס "מערכות הפעלה" הייצוג: (אמנון ברק, מערכות הפעלה)

ייצוג קשרים ע"י רשומות קבוצת כל הקשרים מאותו הסוג היא למעשה יחס ניתן לייצג קשר ע"י רשומה, לדוגמה הקשר: הסטודנט "משה כהן" לוקח את הקורס "מערכות הפעלה" שמלמד המרצה "אמנון ברק" הייצוג: (משה כהן, מערכות הפעלה, אמנון ברק) הקשר: הסטודנט "משה כהן" לוקח את הקורס "מערכות הפעלה" הייצוג: (משה כהן, מערכות הפעלה) הקשר: המרצה "אמנון ברק" מלמד את הקורס "מערכות הפעלה" הייצוג: (אמנון ברק, מערכות הפעלה)

נקודות נוספות Additional Points

מעבר ממודל הישויות והקשרים למודל היחסי כפי שראינו ניתן לייצג כל קבוצת ישויות וכל קבוצת קשרים ע"י יחס מתאים פרטים נוספים על המעבר יינתנו בתרגיל

הערה לגבי מינוח תכונה של ישות נקראת אטריביוט עמודה של יחס נקראת אטריביוט יש כאן שימוש באותו המונח (Attribute) עבור שני מושגים שיש ביניהם דמיון, אבל הם בהחלט שונים זה מזה

קשר ה- ISA במודל הישויות והקשרים יש קשר מיוחד הקרוי קשר ה- ISA (is a) קשר זה מבטא את הירארכית הירושה (Inheritance Hierarchy) הקיימת בין קבוצות של ישויות, לדוגמה קבוצת הישויות של כל הסטודנטים קבוצת הישויות של הסטדונטים לתואר ראשון קבוצת הישויות של הסטודנטים לתואר שני קבוצת הישויות של הסטודנטים שעובדים כעוזרי הוראה

במודל היחסי אין ירושה מכיוון שבמודל היחסי אין ירושה, צריך למצוא דרך נאותה לייצג את קשר ה- ISA פרטים נוספים יינתנו בתרגיל

פרטים חשובים נוספים יילמדו בתרגיל פרטים חשובים נוספים יילמדו בתרגיל ישות חלשה מידת הריבוי של קשר רבים ליחיד רבים לרבים דיאגרמה של ישויות וקשרים ועוד ...

לסיכום מודל הישויות והקשרים מתאר את העולם בעזרת קבוצות של ישויות וקבוצות של קשרים קשר מיוחד הנו קשר ה- ISA ניתן לתרגם כל קבוצת ישויות וכל קבוצת קשרים ליחס מתאים, לפיכך ניתן לתכנן סכמה של מסד נתונים יחסי ע"י יצירת מודל מתאים של העולם הממשי באמצעות ישויות וקשרים, ותרגום התוצאה למודל היחסי

מדוע תכנון סכמה של מסד נתונים הוא בעיה קשה? Why Is It Difficult to Design a Database Schema?

הסיבות לקושי מעבר מעולם לא פורמלי למודל פורמלי הגודל של סכמות ירושה ישות גנרית לעומת ישות פרטנית (פרטיקולרית) אילוצים ערכים חסרים או לא ידועים (ערכי NULL) מידע בסכמה או באפליקציות (ב- methods)

הסבר מפורט של הסיבות האלה A Detailed Explanation of These Reasons

מעבר מעולם לא פורמלי למודל פורמלי מעבר מעולם לא פורמלי למודל פורמלי תכנון סכמה מתחיל בעולם הממשי, שמטבעו אינו ניתן להגדרה פורמלית מלאה והוא נתון לפרשנויות שונות ולעיתים אף סותרות בשלב הראשון עוברים לייצוג פורמלי כלשהו (למשל ע"י ישויות וקשרים) בהמשך ניתן לשנות את הייצוג הפורמלי הראשוני בתהליך שהוא פורמלי לחלוטין לדוגמה, המעבר מישויות וקשרים לסכמות של יחסים

הצעד הראשון – של המעבר מהבלתי פורמלי אל הפורמלי – הוא הבעייתי אי אפשר להוכיח באופן פורמלי שהצעד הראשון (הקרוי ניתוח המערכת) הוא נכון אפשר להשתכנע שהצעד הראשון בוצע כהלכה רק על סמך היכולת שלנו להבין את העולם הממשי אינטואיציה שכל ישר

מה אפשר לעשות? חשוב מאוד להבין היטב את המודל שבו משתמשים בצעד הראשון במיוחד חשוב להבין את היכולות של המודל לייצג מצבים מורכבים המגבלות של המודל לדוגמה, מתי אפשר להחליף קשר משולש בשני קשרים בינאריים? בהמשך הקורס נענה על שאלה זו

הגודל של סכמות בקורס תעבדו עם דוגמאות צעצוע (toy examples) שבהן העולם הממשי הוא פשוט ולכן המודל הפורמלי הנו קטן ניתוח מערכת אמיתי לוקח חודשים (אם לא שנים) והתוצאה יכולה להיות דיאגרמה של ישויות וקשרים שתופסת קיר שלם בתהליך ניתוח המערכת צריך "לסחוט" את המידע מהאנשים עבורם מתכננים את מסד הנתונים

ירושה בין קבוצות שונות של ישויות מתקיימים קשרי ISA (inheritance), שלא תמיד קל לאפיין אותם קבוצת כל הסטודנטים קבוצת הסטודנטים לתואר ראשון קבוצת הסטודנטים לתואר שני קבוצת הסטודנטים לתואר שלישי קבוצת הסטודנטים המשמשים כעוזרי הוראה (גם תלמיד שנה ג' יכול להיות עוזר הוראה ומקבל תנאי שכר כמו תלמיד לתואר שני המשמש כעוזר הוראה) קבוצת הסטודנטים המשמשים כאסיסטנטים (גם תלמיד לתואר שני יכול להיות אסיסטנט, אבל תנאי השכר כשל עוזר הוראה) קבוצת הסטודנטים שעובדים באוניברסיטה

ירושה יש צורך בירושה מרובה (multiple inheritance) בין קבוצות שונות של ישויות מתקיימים קשרי ISA (inheritance), שלא תמיד קל לאפיין אותם קבוצת כל הסטודנטים קבוצת הסטודנטים לתואר ראשון קבוצת הסטודנטים לתואר שני קבוצת הסטודנטים לתואר שלישי קבוצת הסטודנטים המשמשים כעוזרי הוראה (גם תלמיד שנה ג' יכול להיות עוזר הוראה ומקבל תנאי שכר כמו תלמיד לתואר שני המשמש כעוזר הוראה) קבוצת הסטודנטים המשמשים כאסיסטנטים (גם תלמיד לתואר שני יכול להיות אסיסטנט, אבל תנאי השכר כשל עוזר הוראה) קבוצת הסטודנטים שעובדים באוניברסיטה כאשר יש גם דמיון וגם שוני בין ישויות שונות, לא קל להגדיר בדייקנות את הדמיון ואת השוני

ישות גנרית לעומת ישות פרטנית (פרטיקולרית) זהו מקרה נוסף שיש בו גם דמיון וגם שוני ישות גנרית לעומת ישות פרטנית (פרטיקולרית) המידע לגבי קורס כולל את הפרטים הבאים מס' קורס, שם קורס, סילבוס, חוג או חוגים שהקורס מופיע בתוכנית הלימודים שלהם, מס' נקודות זכות ודרישות קדם בנוסף, קיים המידע המופיע במערכת השעות הסמסטר(ים) שבו ניתן הקורס, המורה, השעות והאולמות (אם יש מספר מורים אז יש מספר קבוצות ולכל אחת שעות ואולמות משלה) האם הקשר בין שתי הישויות הוא קשר ISA? מידע קבוע לאורך שנים מידע שמשתנה משנה לשנה

ישות גנרית לעומת ישות פרטיקולרית (פרטנית) אם הקורס הנו מוגבל משתתפים, לאיזה משתי הישויות שייך המידע הזה? המידע לגבי קורס כולל את הפרטים הבאים מס' קורס, שם קורס, סילבוס, חוג או חוגים שהקורס מופיע בתוכנית הלימודים שלהם, מס' נקודות זכות ודרישות קדם בנוסף, קיים המידע המופיע במערכת השעות הסמסטר(ים) שבו ניתן הקורס, המורה, השעות והאולמות (אם יש מספר מורים אז יש מספר קבוצות ולכל אחת שעות ואולמות משלה) האם הקשר בין שתי הישויות הוא קשר ISA?

ישות גנרית לעומת ישות פרטיקולרית (פרטנית) קיים קשר בין סטודנט לבין קורס. לאיזה מבין שתי ישויות הקורסים מתייחס קשר זה? ישות גנרית לעומת ישות פרטיקולרית (פרטנית) המידע לגבי קורס כולל את הפרטים הבאים מס' קורס, שם קורס, סילבוס, חוג או חוגים שהקורס מופיע בתוכנית הלימודים שלהם, מס' נקודות זכות ודרישות קדם בנוסף, קיים המידע המופיע במערכת השעות הסמסטר(ים) שבו ניתן הקורס, המורה, השעות והאולמות (אם יש מספר מורים אז יש מספר קבוצות ולכל אחת שעות ואולמות משלה) האם הקשר בין שתי הישויות הוא קשר ISA?

אילוצים תהליך ניתוח המערכת חייב לגלות את האילוצים השונים המתקיימים בעולם הממשי ולבטא אותם במודל הפורמלי האם יכול להיות קורס שאינו שייך לאף חוג? האם יכול להיות קורס במערכת השעות ללא מורה? אפיון האילוצים הוא בדר"כ קשה יותר מאפיון הישויות והקשרים מתי שני קורסים הם דומים עד כדי כך שאי אפשר לקבל נקודות זכות על שניהם?

ערכים חסרים או לא ידועים (ערכי NULL) לא תמיד קל לאפיין זאת רצוי לצמצם את השימוש בערכי NULL על המשתמש (כותב האפליקציה או השאילתה) מוטלת החובה לטפל נכון ובאופן מפורש בערכי NULL ערכי NULL מאפשרים לקבל תשובות ודאיות או תשובות אפשריות צריך לנסח את השאילתה באופן שונה עבור כל אחת מהאפשרויות האלה

DEPT = ‘CS’ OR DEPT IS NULL דוגמה כדי למצוא את כל הסטודנטים של CS צריך לרשום את התנאי DEPT = ‘CS’ כדי למצוא את כל הסטודנטים של CS או שיש אפשרות שהם ב- CS צריך לרשום את התנאי DEPT = ‘CS’ OR DEPT IS NULL באופן אידיאלי, היינו רוצים לכתוב שאילתה פעם אחת ולהפעילה בשני modes אפשריים: Mode לקבלת כל התשובות הודאיות Mode לקבלת כל התשובות האפשריות הטכנולוגיה הקיימת אינה מאפשרת זאת

מידע בסכמה או באפליקציות (ב- methods) ברור שמסד נתונים אוניברסיטאי יכיל מידע על קורסים, סטודנטים וכד' היכן יופיע מידע על הכללים לקבלת תואר ב- CS? אם מידע זה בכלל קיים במסד הנתונים, אז רוב הסיכויים שהוא מופיע בתוך method שבודק האם סטודנט זכאי לתואר אי אפשר לשאול שאילתה לגבי מידע שמופיע בתוך קוד לדוגמה, היינו רוצים לדעת האם חובה לקחת קורס באלגוריתמים כדי לקבל תואר ב- CS

אתגר חשוב וקשה לבנות סכמה שכוללת בתוכה את כל המידע, כולל הכללים לקבלת תואר, ועל ידי כך לאפשר שאילתות מהצורה האם הכרחי לקחת קורס בהסתברות כדי לקבל תואר ב- CS? אם לא, האם צריך לקחת קורסים מסוימים במקום הקורס בהסתברות? מערכת שמאפשרת זאת קרויה מערכת מומחה