יסודות
מבנה מסד נתונים יחסי
מסד נתונים יחסי מורכב מטבלאות המקושרות זו לזו באמצעות מפתחות.
┌─────────────────────────────────────────────────────────┐
│ מסד נתונים (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
);
סיכום
- מסד נתונים יחסי = אוסף של טבלאות מקושרות
- טבלה = עמודות (שדות) + שורות (רשומות)
- מפתח ראשי = מזהה ייחודי
- מפתח זר = קישור בין טבלאות
- אילוצים = כללים לשמירה על תקינות הנתונים
← רקע והיסטוריה | המשך לתחביר →
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה זה Primary Key?
הצגת התשובה
תשובה ד. לרוב id עם AUTO_INCREMENT. אין שתי שורות עם אותו ערך.
-
מה זה Foreign Key?
הצגת התשובה
תשובה ב. למשל orders.user_id שמפנה ל-users.id.