סכמה של מסד הנתונים של מדיה ויקי
מנהל מסד נתונים Hsql
תוכנת PhppgAdmin לניהול מסד נתונים
מסך ניהול של מסד נתונים MySQL
**מסד נתונים** (באנגלית: **Database** – דַּאטָה־בֵּייס, או בראשי תיבות **DB**, "בסיס נתונים") הוא אמצעי המשמש לאחסון מסודר של נתונים במחשב, לשם אחזורם ועיבודם. מסד נתונים מאוחסן באמצעי אחסון נתונים, בדרך כלל על גבי דיסק קשיח, המאפשר גישה ישירה לנתונים. הגישה למסד הנתונים נעשית באמצעות תוכנה ייעודית – מערכת לניהול מסד נתונים (DBMS – Database Management System). מסד הנתונים בנוי לפי מודל לאחסון הנתונים, כמו מנגנונים פנימיים למיון ולחיפוש.

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

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

סוגים שונים של מסדי נתונים
--------------------------

### חלוקה לפי פעילות

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

### חלוקה לפי סוג

* מסדי נתונים אקטיביים (Active Databases).
* מסדי נתונים עתיים (Temporal Databases).
* מסדי נתונים שיתופיים (Cooperative/Federated Databases).
* מסדי נתונים מבוזרים (Distributed Databases).
* מסדי נתונים הסתברותיים (Probabilistic Databases).

מרכיבי מסד הנתונים
------------------

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

אוסף כל השדות המתארים את האזרח הוא ה**רשומה** (record) של אותו אזרח. לכל רשומה יש **מפתח ראשי** (primary key), המשמש לזיהוי חד-משמעי שלה. מפתחות משניים משמשים לאיתור מהיר של רשומות ולקישור בין רשומות. ברשומת האזרח, מספר הזהות משמש כמפתח ראשי, ושם המשפחה והשם הפרטי משמשים **כמפתח משני**. מפתח המורכב משילוב של כמה שדות קרוי **מפתח מורכב**.

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

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

מנגנונים במערכת לניהול מסד נתונים
---------------------------------

קטלוג מערכתבקטלוג רשום המידע אודות מסד הנתונים. כמו הגדרת הרשומות והשדות, שמותיהם וסוגיהם, ברירות המחדל וחוקי האימות של השדות. המפתחות הראשיים והזרים של כל רשומה. מהם הכללים של אימות הייחוסים. הרשאות של משתמשים ופעולות שמותר להם לבצע. כל המידע הזה מאוחסן בטבלאות מערכת אינטגרליות של מסד הנתונים.
Query Optimizerרכיב במסד הנתונים האחראי לתכנון ביצוע השאילתות במסד הנתונים והמבצע מיטוב שאילתות.
Storage Managerמנגנון המנהל את האחסון הפיסי של הנתונים על גבי הדיסק.
Cache Managerמנגנון המנהל את השימוש בזיכרון מטמון. ההחלטה אילו פריטים להכניס למטמון מתבססת בדרך כלל על היקף השימוש. לדוגמה טבלה אשר נמצאת בשימוש רב תוכנס למטמון על מנת לקצר את זמן הגישה למידע שבה.
יומן האירועיםמנגנון הרושם את כל העדכונים המבוצעים בתוכן של מסד הנתונים כדי לתמוך בהתאוששות ושחזור של מסד הנתונים במקרה של תקלה בנתונים הנובעת מהפסקה של תנועה או של בעיה אחרת. במקרה של תקלה ניתן לשחזר את הנתונים אחורה למצב שהיה לפני התחלת התנועה, אפשרות נוספת היא לבצע שיחזור לפנים, באמצעות שיחזורו מאמצעי גיבוי קדימה אל המצב המתבקש.
מנגנון בקרת המקביליות (Concurrency Control)מנגנון זה אחראי לביצוע התקין של תנועות במסד הנתונים (Transactions). מנגנון בקרת המקביליות אחראי לקיום תכונות ACID במסד הנתונים. תנועה (טרנזקציה) היא אבסטרקציה של אוסף פעולות קריאה וכתיבה אטומיות לאובייקטים במסד הנתונים. היסטוריה מגדירה יחס סדר חלקי בין תנועות הרצות במקביל במסד הנתונים. כאשר שתי תנועות שונות ניגשות לאותו אובייקט ייתכן מצב של חוסר עקביות במסד הנתונים כתוצאה מכך ששתי התנועות מתנגשות. שתי תנועות נקראות מתנגשות כאשר לפחות אחת מהן מבצעת פעולת כתיבה לאותו אובייקט. מנגנון בקרת המקביליות דואג שביצוע התנועות יהיה נכון ושקיף למשתמש. אחת מהמנגנונים הנפוצים לבקרת מקביליות הוא מנגנון הנעילות (Lock Based Mechanism). האלגוריתם הנפוץ ביותר נקרא 2PL (אנ') ‏(Two Phase Locking). חיסרון בשימוש במנגנון נעילות כגון 2PL הוא האפשרות להגיע למצב של קיפאון (Deadlock). מנגנונים מבוססי נעילות נוספים שבשימוש הם: STRICT 2PL ו Conservative 2PL. כמו כן ישנם מנגנוני בקרת מקביליות המשתמשים בתגיות זמן (Timestamps) ומנגנונים מבוססי ולידציה.
מנגנון שכפול (Replica Control)מנגנון המאפשר ליצור כמה מופעים של מסד הנתונים באתרים שונים ולבצע סינכרון בין הנתונים שבהם באופן שכל שינוי במסד נתונים אחר מועבר לכל היתר. באמצעות מנגנון השכפול אפשר להעביר גם שינוי הגדרות של מסד הנתונים לכל הבסיסים האחרים.

מסדי נתונים נפוצים
------------------

### מודל רשתי

* ADABAS

### מודל היררכי

* IMS/DB

### מודל טבלאי

* MySQL
* Microsoft SQL Server
* אורקל
* Access
* DB2
* PostgreSQL
* אינפורמיקס
* Sybase Database
* SQLite
* Firebird
* Teradata

### מודל העצמים

* PostgreSQL

### NoSQL

* MongoDB
* אפאצ'י קסנדרה
* RavenDB

ראו גם
------

* אינדקס
* תוכנה - מונחים
* מסד נתונים גרפי
* CAP theorem

לקריאה נוספת
------------

* רז הייפרמן, **בסיסי נתונים טבלאיים ושפת SQL**, הוצאת הוד-עמי.
* מבוא למאגרי נתונים – רם קדם
* **Database System Concepts,** Avi Silberschatz Henry F. Korth S. Sudarshan**,** McGraw-Hill

קישורים חיצוניים
----------------

| מיזמי קרן ויקימדיה |
| --- |
| ויקימילון ערך מילוני בוויקימילון: **מסד נתונים** |
| ויקימילון ערך מילוני בוויקימילון: **בסיס נתונים** |
| ויקימילון ערך מילוני בוויקימילון: **DB** |
| ויקיציטוט ציטוטים בוויקיציטוט: **מסד נתונים** |
| ויקישיתוף תמונות ומדיה בוויקישיתוף: **מסד נתונים** |

* מסדי נתונים באינטרנט, אתר אית"ן
* ארגון ומפתוח של מאגרי מידע (האו"פ)
* הרצאות בקורס בסיסי נתונים (בעברית), באתר אוניברסיטת בן-גוריון
* מילון למונחי ארגון נתונים | 2002 | השלמות 2014 | באתר האקדמיה ללשון העברית
* מסד נתונים, באתר אנציקלופדיה בריטניקה (באנגלית)
* מסדי נתונים, דף שער בספרייה הלאומית
* מסד נתונים, באתר MathWorld (באנגלית)

| מסד נתונים |
| --- |
| 

|  |
| --- |
| שדה • רשומה • טבלה • מפתח ראשי • מפתח מורכב • קובץ • מסד נתונים • נרמול • מודל ישויות קשרים • CAP theorem |

 |

| תחומים במדעי המחשב |
| --- |
| יסודות מתמטים | לוגיקה מתמטית • תורת הקבוצות • תורת המספרים • תורת הגרפים • תורת הטיפוסים • תורת הקטגוריות • אנליזה נומרית • תורת האינפורמציה |
| תורת החישוביות | תורת האוטומטים • תורת הרקורסיה • תורת הסיבוכיות • מחשוב קוונטי |
| אלגוריתמים ומבנה נתונים | אנליזה של אלגוריתמים • גאומטריה חישובית |
| שפות תכנות ומהדרים | מפרש • פרדיגמת תכנות (תכנות פרוצדורלי • תכנות מונחה עצמים • תכנות פונקציונלי • תכנות לוגי) |
| חישוב מבוזר ועיבוד מקבילי | עיבוד מקבילי • מחשוב סריגי • בקרת מקביליות |
| הנדסת תוכנה | ניתוח מערכות מידע • עיצוב תוכנה • תכנות מחשבים • שיטות פורמליות • בדיקות תוכנה • מתודולוגיית פיתוח תוכנה |
| תקשורת | ניתוב • טופולוגיית רשת • קריפטוגרפיה |
| מסד נתונים | מסד נתונים יחסי • SQL • תנועה • אינדקסים • כריית מידע • CAP theorem |
| בינה מלאכותית | חשיבה אוטומטית • בלשנות חישובית • ראייה ממוחשבת • עיבוד שפה טבעית • בינה חישובית • מערכת מומחה • למידה חישובית • רובוטיקה |
| גרפיקה | הדמיה ממוחשבת • הנפשה ממוחשבת • עיבוד תמונה |
| שפות פורמליות | שפה רגולרית • שפה חסרת הקשר • שפה תלוית הקשר • ההיררכיה של חומסקי |
| שימושים במדע | ביואינפורמטיקה • מדעים קוגניטיביים • כימיה חישובית • פיזיקה חישובית • אנליזה נומרית |

|  |  |
| --- | --- |
| בקרת זהויות עריכת הנתון בוויקינתונים | 
* NLI: 987007532088905171
* BnF: cb11931023c (data)
* GND: 4113276-2
* LCCN: sh86007767
* NARA: 10634624
* NDL: 00865521
* NKC: ph114295

 |