יסודות

מבנה מסד נתונים יחסי

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

┌─────────────────────────────────────────────────────────┐
│                    מסד נתונים (Database)                │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐      │
│  │   users     │  │   orders    │  │  products   │      │
│  │  (טבלה)     │  │  (טבלה)     │  │  (טבלה)    │      │
│  └─────────────┘  └─────────────┘  └─────────────┘      │
└─────────────────────────────────────────────────────────┘

מבנה טבלה

טבלה מורכבת מעמודות (שדות) ושורות (רשומות):

טבלת users (משתמשים):
┌────┬─────────┬─────────────────────┬─────┐
│ id │  name   │        email        │ age │  ← עמודות (Columns)
├────┼─────────┼─────────────────────┼─────┤
│ 1  │ יוסי    │ [email protected]      │ 25  │  ← שורה (Row)
│ 2  │ שרה     │ [email protected]      │ 30  │  ← שורה (Row)
│ 3  │ דוד     │ [email protected]     │ 28  │  ← שורה (Row)
└────┴─────────┴─────────────────────┴─────┘

מאפייני עמודות

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

מפתחות (Keys)

מפתח ראשי (Primary Key)

  • מזהה ייחודי לכל שורה בטבלה
  • לא יכול להיות ריק (NULL)
  • לרוב מספר שעולה אוטומטית (AUTO_INCREMENT)
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,  -- מפתח ראשי
    name VARCHAR(100),
    email VARCHAR(255)
);

מפתח זר (Foreign Key)

  • מקשר בין טבלאות
  • מפנה למפתח ראשי בטבלה אחרת
CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,                        -- מפתח זר
    total DECIMAL(10,2),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

סוגי קשרים בין טבלאות

קשר One-to-One (1:1)

שורה אחת בטבלה A מתאימה לשורה אחת בלבד בטבלה B.

users          profiles
┌────┐         ┌────┐
│ 1  │────────▶│ 1  │
│ 2  │────────▶│ 2  │
│ 3  │────────▶│ 3  │
└────┘         └────┘

דוגמה: משתמש ← פרופיל


קשר One-to-Many (1:N)

שורה אחת בטבלה A יכולה להתאים למספר שורות בטבלה B.

users          orders
┌────┐         ┌────┐
│ 1  │────┬───▶│ 1  │
│    │    └───▶│ 2  │
│ 2  │────────▶│ 3  │
│ 3  │    ┌───▶│ 4  │
│    │────┴───▶│ 5  │
└────┘         └────┘

דוגמה: משתמש אחד ← הזמנות רבות


קשר Many-to-Many (N:N)

שורות רבות בטבלה A יכולות להתאים לשורות רבות בטבלה B.

students       enrollments      courses
┌────┐         ┌────┬────┐      ┌────┐
│ 1  │◀───────▶│ 1  │ 1  │◀────▶│ 1  │
│ 2  │◀───────▶│ 1  │ 2  │◀────▶│ 2  │
│ 3  │◀───────▶│ 2  │ 2  │◀────▶│ 3  │
└────┘         │ 3  │ 1  │      └────┘
               └────┴────┘
               (טבלת קשר)

דוגמה: סטודנטים ← קורסים (דרך טבלת הרשמות)


סוגי פעולות SQL

DDL - Data Definition Language

פקודות להגדרת מבנה מסד הנתונים:

פקודה תיאור
CREATE יצירת טבלה/מסד נתונים
ALTER שינוי מבנה טבלה
DROP מחיקת טבלה/מסד נתונים
TRUNCATE ריקון טבלה

DML - Data Manipulation Language

פקודות לעבודה עם הנתונים: 0 | פקודה | תיאור | |-------|--------| | SELECT | קריאת נתונים | | INSERT | הוספת נתונים | | UPDATE | עדכון נתונים | | DELETE | מחיקת נתונים |

DCL - Data Control Language

פקודות להרשאות:

פקודה תיאור
GRANT הענקת הרשאות
REVOKE שלילת הרשאות

אילוצים (Constraints)

אילוצים מגדירים כללים לנתונים בטבלה:

אילוץ הסבר
PRIMARY KEY מפתח ראשי - ייחודי ולא ריק
SERIAL מפתח ראשי - ייחודי ולא ריק
FOREIGN KEY מפתח זר - קשר לטבלה אחרת
UNIQUE ערכים ייחודיים בלבד
NOT NULL לא מאפשר ערך ריק
DEFAULT ערך ברירת מחדל
CHECK תנאי לערכים מותרים
CREATE TABLE products (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    price DECIMAL(10,2) CHECK (price > 0),
    category VARCHAR(50) DEFAULT 'general',
    sku VARCHAR(20) UNIQUE
);

סיכום

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

← רקע והיסטוריה | המשך לתחביר →

בדקו את עצמכם

נסו לענות לבד לפני שאתם פותחים את התשובה.

  1. מה זה Primary Key?

    1. סיסמה למסד
    2. טבלה ראשית
    3. העמודה הראשונה
    4. עמודה שמזהה כל שורה באופן ייחודי
    הצגת התשובה

    תשובה ד. לרוב id עם AUTO_INCREMENT. אין שתי שורות עם אותו ערך.

  2. מה זה Foreign Key?

    1. מפתח הצפנה
    2. עמודה שמפנה ל-Primary Key בטבלה אחרת ויוצרת קשר
    3. מפתח מטבלה בחו"ל
    4. עמודה ריקה
    הצגת התשובה

    תשובה ב. למשל orders.user_id שמפנה ל-users.id.