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

תוכן עניינים:

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

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

Image
Image

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

תלות פונקציונלית לעומת תלות מרובה ערכים

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

אם תכונה X קובעת באופן ייחודי תכונה Y, אז Y תלוי פונקציונלית ב-X. זה כתוב כ-X -> Y. לדוגמה, בטבלת התלמידים למטה, Student_Name קובע את העיקר:

Student_Name Major
Ravi היסטוריית אמנות
Beth Chemistry

ניתן לכתוב את התלות הפונקציונלית הזו: Student_Name -> Major. כל Student_Name קובע בדיוק רב סרן אחד ולא יותר.

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

Student_Name Major Sport
Ravi היסטוריית אמנות כדורגל
Ravi היסטוריית אמנות כדורעף
Ravi היסטוריית אמנות טניס
Beth Chemistry טניס
Beth Chemistry כדורגל

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

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

תלות מרובה ערכים נכתבת X ->-> Y. במקרה זה:

Student_Name ->-> Major

Student_Name ->- > Sport

זה נקרא "שם_תלמיד רב-קביעתי רב-קבוע" ו-"שם_תלמיד מרובה-קביעת ספורט."

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

תלות ונורמליזציה מרובה ערכים

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

לטבלה למטה יש כעת תלות פונקציונלית של Student_Name -> Major, וללא תלות מרובת ערכים:

Student_Name Major
Ravi היסטוריית אמנות
Ravi היסטוריית אמנות
Ravi היסטוריית אמנות
Beth Chemistry
Beth Chemistry

למרות לטבלה זו יש גם תלות פונקציונלית אחת של Student_Name -> Sport:

Student_Name Sport
Ravi כדורגל
Ravi כדורעף
Ravi טניס
Beth טניס
Beth כדורגל

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

מוּמלָץ: