מפתח ראשי לעומת מפתח ייחודי
עמודה או קבוצה של עמודות, שניתן להשתמש בהן כדי לזהות או לגשת לשורה או לקבוצת שורות במסד נתונים נקראים מפתח. מפתח ייחודי הוא מפתח שיכול לזהות באופן ייחודי שורה בטבלה בהקשר של מסדי נתונים יחסיים. מפתח ייחודי מורכב מעמודה בודדת או מערך עמודות. מפתח ראשי הוא גם שילוב של עמודות בטבלה המזהים שורה באופן ייחודי. אבל זה נחשב למקרה מיוחד של המפתח הייחודי.
מהו מפתח ייחודי?
כפי שהוזכר קודם לכן, מפתח ייחודי הוא עמודה בודדת או קבוצה של עמודות שיכולות לזהות באופן ייחודי שורה בטבלה.לכן, מפתח ייחודי מוגבל כך שאין שני ערכים שלו שווים. מאפיין חשוב אחד הוא שהמפתחות הייחודיים אינם אוכפים את האילוץ NOT NULL. מכיוון ש-NULL מייצג את היעדר ערך, אם לשתי שורות יש NULL בעמודה, זה לא אומר שהערכים שווים. עמודה המוגדרת כמפתח ייחודי מאפשרת רק ערך NULL בודד באותה עמודה. אז ניתן להשתמש בזה כדי לזהות את השורה הספציפית הזו באופן ייחודי. לדוגמה, בטבלה המכילה מידע על תלמיד, ניתן להגדיר את תעודת תלמיד כמפתח ייחודי. מכיוון שאין שני סטודנטים שיכולים להיות בעלי תעודת זהות זהה, זה מזהה תלמיד בודד באופן ייחודי. אז העמודה מזהה סטודנט מספקת את כל המאפיינים של מפתח ייחודי. בהתאם לעיצוב של מסד נתונים, לטבלה עשויה להיות יותר ממפתח ייחודי אחד.
מהו מפתח ראשי?
מפתח ראשי הוא גם עמודה או שילוב של עמודות המגדירים באופן ייחודי שורה בטבלה של מסד נתונים יחסי. לטבלה יכולה להיות לכל היותר מפתח ראשי אחד. מפתח ראשי אוכף את האילוץ המרומז NOT NULL.לכן, עמודה שמוגדרת כמפתח הראשי לא יכולה לכלול ערכי NULL. מפתח ראשי יכול להיות תכונה רגילה בטבלה שמובטחת שהיא ייחודית כמו מספר תעודת זהות או שזה יכול להיות ערך ייחודי שנוצר על ידי מערכת ניהול מסד הנתונים כגון מזהה גלובלי ייחודי (GUID) ב-Microsoft SQL Server. מפתחות ראשיים מוגדרים באמצעות אילוץ PRIMARY KEY בתקן ANSI SQL. ניתן להגדיר מפתח ראשי גם בעת יצירת הטבלה. SQL מאפשר למפתח ראשי להיות מורכב מעמודה אחת או יותר וכל עמודה שנכללת במפתח הראשי מוגדרת באופן מרומז כ- NOT NULL. אבל חלק ממערכות ניהול מסדי הנתונים דורשות להפוך את עמודות המפתח הראשי במפורש לא NULL.
הבדל בין מפתח ראשי למפתח ייחודי
למרות שגם המפתח הראשי וגם המפתח הייחודי הם עמודה אחת או יותר שיכולה לזהות באופן ייחודי שורה בטבלה, יש להם כמה הבדלים חשובים. והכי חשוב, לטבלה יכולה להיות רק מפתח ראשי בודד בעוד שהיא יכולה להכיל יותר ממפתח ייחודי אחד.מפתח ראשי יכול להיחשב כמקרה מיוחד של המפתח הייחודי. הבדל נוסף הוא שלמפתחות ראשיים יש אילוץ NOT NULL מרומז בעוד שלמפתח הייחודי אין אילוץ זה. לכן, עמודות מפתח ייחודיות עשויות להכיל ערכי NULL או לא, אך עמודות מפתח ראשי אינן יכולות להכיל ערכי NULL.