כך שבעולם שלניהול מסדי נתונים, מפתחות משמשים תפקיד מרכזי בארגון, גישה ושימור של אינטגריתיות נתונים. בין אם אתה מנהל מסד נתונים מנוסה או שהתחלת את המסע שלך בניהול נתונים, הבנת סוגי המפתחות השונים היא חיונית. בפוסט זה, נחקור את כל סוגי המפתחות השונים, מטרתם ואיך הם תורמים לעיצוב מסדי נתונים יעילים.
כדי להדגים את הרעיונות הללו, נשתמש במסד נתונים של אוניברסיטה פשוטה עם הטבלאות הבאות:
- Students
- Courses
- Enrollments
- Professors
- Departments
בואו נתעמק בכל סוג של מפתח ונראה איך הם מיושמים במסד הנתונים של האוניברסיטה שלנו.
1. מפתח ראשי
הגדרה
קולומן או מערך קולומנים שמזהה באופן ייחודי כל שורה בטבלה
תכונות
- חייב להיות ייחודי לכל רשומה
- לא יכול להכיל ערכים
NULL
- צריך להיות חסיד (לא משתנה לאורך זמן)
דוגמה
בטבלת Students
שלנו, אנחנו משתמשים ב- StudentID
כמפתח ראשי.
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE
);
כאן, StudentID
מזהה באופן ייחודי כל סטודנט, ובכך מבטיח שלא יהיו שני סטודנטים עם אותו מספר זהות.
2. מפתח זר
הגדרה
עמודה או סט של עמודות בשורה אחת שתואם למפתח עיקרי בשורה אחרת
מטרה
שומר על שלמות הקשרים ויוצר יחסים בין השורות
דוגמה
בשורת ההרשמות
שלנו, אנחנו משתמשים ב-StudentID
ו-CourseID
כמפתחים זרים.
CREATE TABLE Enrollments (
EnrollmentID INT PRIMARY KEY,
StudentID INT,
CourseID INT,
EnrollmentDate DATE,
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
)
עיצוב זה מבטיח שכל רשומת הרשמה מקושרת עם סטודנטים וקורסים חוקיים.
3. מפתח משולב
הגדרה
מפתח שמורכב משתי עמודות או יותר כדי לזהות באופן ייחודי את הרשומה
שימוש
כאשר אין עמודה יחידה שיכולה להבטיח ייחודיות
דוגמה
ניתן לשנות את עיצוב ההרשמות
שלנו כדי להשתמש במפתח משולב:
CREATE TABLE Enrollments (
StudentID INT,
CourseID INT,
EnrollmentDate DATE,
Grade CHAR(2),
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
כאן, השילוב של StudentID
ו-CourseID
יוצר מפתח משולב, שמזהה באופן ייחודי את כל הרשמה.
4. מפתח מועמד
הגדרה
סט מינימלי של תכונות שיכולות לזהות באופן ייחודי את הרשומה
תכונות
- חייב להיות ייחודי
- לא יכול להכיל ערכים
NULL
- לשורה יש יותר ממפתח מועמד אחד.
דוגמה
בשורש הנתונים שלנו בטבלת Students
, יחד עם StudentID
ועם Email
יכולים להיות מועמדים למפתחות, כי כל אחד מהם יכול לזהות באופן ייחודי תלמיד. בחרנו ב-StudentID
כמפתח עיקרי, אך Email
יכל להיות אלטרנטיבה.
5. מפתח על
הגדרה
כל סט של עמודות שיכול לזהות באופן ייחודי רישום, כולל עמודות לא נחוצות
הבדל ממפתח מועמד
יכול לכלול תכונות נוספות שאינן נחוצות לזיהוי ייחודי
דוגמה
בטבלת Students
שלנו, מפתחים על יכולים לכלול:
{StudentID, FirstName, LastName, Email}
{StudentID, Email}
{Email, FirstName, LastName}
כולם כוללים מפתחים מועמדים (StudentID
או Email
) ושדות נוספים.
6. מפתח אלטרנטיבי
הגדרה
מפתח מועמד שלא נבחר כמפתח עיקרי
מטרה
מספק שיטה אלטרנטיבית לזיהוי ייחודי של רישומים
דוגמה
בטבלת Students
שלנו, אם בחרנו ב-StudentID
כמפתח עיקרי, אז Email
הופך למפתח אלטרנטיבי:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE -- This is an alternate key
);
המגבלת UNIQUE
על Email
מבטיחה שיכול גם להשתמש בה לזיהוי ייחודי של תלמידים.
7. מפתח משליח
הגדרה
מפתח מלאכותי שיוצר בשביל זיהוי ייחודי
מאפיינים
- בדרך כלל יוצא אוטו-גנרו מהבסיס הנתוני
- אין לו משמעות עסקית
דוגמה
בטבלת הCourses
שלנו, אולי נהיה משתמשים בCourseID
המערך בעצמו:
CREATE TABLE Courses (
CourseID INT PRIMARY KEY AUTO_INCREMENT,
CourseCode VARCHAR(10) UNIQUE,
CourseName VARCHAR(100),
Credits INT
);
CourseID
הוא מפתח שולייה, בעוד שCourseCode
עשוי להיות מזהה טבעי יותר.
8. מפתח טבעי
הגדרה
מפתח שיוצר מנתונים שקיימים כבר בעולם האמיתי
יתרון
מספק זיהוי משמעותי
מבגרת
עשויה להשתנות במהלך הזמן
דוגמה
בטבלת Professors
, אולי נחשוב על השימוש במספר הביטחון הציבורי (למרות שזה לא ממומן בשל סיפורי פרטיות):
CREATE TABLE Professors (
ProfessorID INT PRIMARY KEY,
SSN CHAR(9) UNIQUE, -- This could be used as a natural key
FirstName VARCHAR(50),
LastName VARCHAR(50),
Department VARCHAR(50)
);
9. מפתח מערך
הגדרה
מפתח שמורך משתי עמודות או יותר, בהם השילוב יכול להיות משמעותי מבחינה עסקית
הבדל ממפתח מערך
נעשה בדרך כלל במקרה בו העמודות המשולבות משמעותיות מעבר לזיהוי ייחודי בלבד.
דוגמה
בטבלת CourseOfferings
:
CREATE TABLE CourseOfferings (
CourseID INT,
Semester CHAR(6), -- e.g., '202301' for Spring 2023
ProfessorID INT,
RoomNumber VARCHAR(10),
PRIMARY KEY (CourseID, Semester),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID),
FOREIGN KEY (ProfessorID) REFERENCES Professors(ProfessorID)
);
השילוב של CourseID
וSemester
יוצר מפתח מאוחד, שמייצג את ההערכה הייחודית של הקורס וגם יש לו משמעות עסקית.
10. מפתח פשוט
הגדרה
מפתח שמורך מרקע אחד
יתרון
קל ליישם ולהשתמש בו
מדגם
בטבלת הDepartments
שלנו:
CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY,
DepartmentName VARCHAR(100) UNIQUE,
Building VARCHAR(50),
Budget DECIMAL(10, 2)
);
DepartmentID
הוא מפתח פשוט: מפתח אחד שמייצג את כל המחלקות באופן ייחודי.
11. מפתח ייחודי
הגדרה
מפתח שמובטח שכל הערכים בעמודה אחת או בקבוצת עמודות יוצאים מהמקבילה
ההבדל ממפתח ראשי
יכול לאפשר NULL
ערכים (אם אינם מוגדרים אחרת)
מדגם
בטבלת הStudents
שלנו, Email
מדגם מפתח ייחודי:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE -- This is a unique key
);
המגבלה UNIQUE
מובטחת ששני סטודנטים לא יכולים לקבל את אותו כתובת דוא״ל.
הסיכוי
הבנה של סוגים שונים של מפתחים הם חשובים לעיתים רבות בעיצוב ה בסיס נתונים ובניהולם. כל סוג של מפתח משייך למטרה ספציפית, מבטיח הוקרמה לבטיחות הנתונים ומסגר יחסים בין הטבלות. על ידי בחירה מיומנת ויישום המפתחים המתאימים, ניתן ליצור מערכות בסיס נתונים יעילות, אמינות ומסוגלות להתארגן בצורה סקליבלית.
שימו לב, הבחירה במפתחים יכולה להשפיע באופן משמעותי על ביצועים המערכת הבסיס לנתונים, בקיימות המערכת והיכולת לייצג יחסים של העולם האמיתי בצורה מדוייקת. תשקלו תמיד על הצרכים הספציפיים של היישומך ועל המידע שלך כשאתם מחליטים איזה מפתחים להשתמש בהם.
זה פוסט חלק מסדרת ה בסיסים המפתחים לבסיס נתונים שלנו. השאר מבוטח לקבל עוד מאמרים עמוקים יותר על ניהול ועיצוב מערכות בסיס נתונים.
Source:
https://dzone.com/articles/database-keys-a-comprehensive-guide