# בסיס נתונים

### מתוך ויקיפדיה, האנציקלופדיה החופשית

יש לך הודעות חדשות (השווה לגרסה הקודמת).

בסיס נתונים (או מסד נתונים, ובאנגלית database או בקיצור DB) הוא אמצעי המשמש לאחסון מסודר של נתונים במחשב, לשם אחזורם ועיבודם. בסיס נתונים מאוחסן באמצעי אחסון מגנטי, בדרך כלל דיסק קשיח, המאפשר גישה ישירה לנתונים. הגישה לבסיס הנתונים נעשית באמצעות תוכנה ייעודית - מערכת לניהול בסיס נתונים (DBMS - Database Management System). בסיס הנתונים בנוי לפי מודל לאחסון הנתונים, כמו מנגנונים פנימיים למיון וחיפוש.

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

המודל הנפוץ ביותר היום, הוא המודל הטבלאי שמכונה גם יחסי. במודל זה בסיס הנתונים בנוי מטבלאות, כאשר כל טבלה מכילה מידע על ישות מסוימת (לדוגמה, לקוחות במערכת בנקאית). ולכל רשומה בטבלה יש שדה מפתח שמזהה באופן יחודי את הרשומה. הקשרים בין הרשומות בטבלאות השונות נעשה באמצעות שדה המפתח כאשר מספר הפעמים בו יכול להיות משויך המפתח לרשומה ספציפית בטבלה האחרת מגדיר את ריבוי הקשר(יחיד לרבים - רבים לרבים וכו'). שליפת מידע ופעולות עדכון בבסיס נתונים טבלאי נעשות באמצעות שפת 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)

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

## [עריכה] בסיסי נתונים נפוצים:

### [עריכה] מודל רשתי

TOTAL

### [עריכה] מודל היררכי

IMS

### [עריכה] מודל הטבלאי:

MySQL, SQL Server, Oracle, Access, DB2, PostgreSQL. אינפורמיקס וסיבייס.

## [עריכה] ראו גם

- חוקי הנרמול
- אינדקס
- תרשים קשרי ישויות
- ניתוח מערכת

- תוכנה - מונחים

## [עריכה] לקריאה נוספת

- רז הייפרמן, בסיסי נתונים טבלאיים ושפת SQL, הוצאת הוד עמי.

מקור: http://he.wikipedia.org../../../%D7%91/%D7%A1/%D7%99/%D7%91%D7%A1%D7%99%D7%A1_%D7%A0%D7%AA%D7%95%D7%A0%D7%99%D7%9D.html

קטגוריות: בסיסי נתונים | מבני נתונים

##### Views

- ערך
- שיחה
- גרסה נוכחית

##### קהילה

- שער הקהילה
- עזרה
- דלפק ייעוץ
- מזנון
- יצירת קשר
- ספר אורחים

##### חיפוש

##### שפות אחרות

- English
- Afrikaans
- العربية
- Български
- Bosanski
- Català
- Česky
- Dansk
- Deutsch
- Esperanto
- Español
- Euskara
- فارسی
- Suomi
- Français
- Gaeilge
- Galego
- Hrvatski
- Magyar
- Interlingua
- Bahasa Indonesia
- Íslenska
- Italiano
- 日本語
- ქართული
- 한국어
- Lietuvių
- Latviešu
- Bahasa Melayu
- Nederlands
- Norsk (bokmål)
- Polski
- Português
- Română
- Русский
- Simple English
- Slovenčina
- Slovenščina
- Српски / Srpski
- Svenska
- ไทย
- Tagalog
- Türkçe
- Українська
- Tiếng Việt
- 中文