במילון מונחים טכני, תכונה (או מאפיין, אטריבוט) מוגדרת כמפרט, מאפיין או נכס שמגדיר אובייקט, אלמנט או ישות. היא מתארת פיסת מידע ספציפית אודות משהו. חשבו על תכונה כעל שם תואר המתאר שם עצם (האובייקט/הישות).
לדוגמה, אם הישות היא $\text{מְכוֹנִית}$, התכונות שלה עשויות להיות $\text{צֶבַע}$, $\text{יַצְרָן}$, $\text{דֶגֶם}$, $\text{שְׁנַת יִצוּר}$ ו$\text{מְהִירוּת}$.
במדעי המחשב, מודלי נתונים ומסדי נתונים, תכונה היא עמודה בטבלה או שדה במבנה מחלקה שמחזיק סוג ספציפי של נתונים עבור כל מופע של אותה ישות או אובייקט.
הליבה: ישות-תכונה-ערך (Entity-Attribute-Value – EAV)
המושג תכונה מובן בצורה הטובה ביותר באמצעות התבנית הבסיסית של ישות-תכונה-ערך:
- ישות (אובייקט): הפריט או הדבר המרכזי שמתארים. (לדוגמה: כלב ספציפי בשם $\text{באדי}$)
- תכונה (מאפיין): המאפיין הספציפי שאותו מודדים או מגדירים. (לדוגמה: $\text{גֶזַע}$)
- ערך: הנתון או המצב המוקצה למאפיין זה עבור הישות הספציפית. (לדוגמה: $\text{גולדן רטריבר}$)
| ישות | תכונה | ערך |
| באדי | גיל | 5 |
| באדי | משקל | 34 $\text{ק"ג}$ |
| באדי | צבע | זהוב |
שימוש בתכונות: יסוד הנתונים
תכונות הן אבני הבניין של הנתונים. השימושים העיקריים שלהן הם ב:
1. מודלי נתונים ומסדי נתונים (השימוש העיקרי)
במסדי נתונים יחסיים (RDBMS), תכונות הן העמודות של טבלה. הן מגדירות את הסכמה – המבנה – של הנתונים.
- דוגמה: טבלת $\text{לקוח}$ חייבת לכלול תכונות כמו $\text{מזהה לקוח}$, $\text{שם פרטי}$, $\text{שם משפחה}$ ו$\text{כתובת אימייל}$. כל שורה (או רשומה, שהיא מופע הישות) בטבלה חייבת להתאים למערך תכונות זה. ללא תכונות, מסד הנתונים יהיה רק אוסף כאוטי של ערכים; תכונות מעניקות לנתונים משמעות והקשר.
2. תכנות מונחה-עצמים (OOP)
ב-OOP, תכונה נקראת לעתים קרובות שדה או מאפיין בתוך מחלקה. הן מחזיקות את המצב של אובייקט.
- דוגמה: מחלקת $\text{כלב}$ עשויה לכלול תכונות $\text{שם}$, $\text{גיל}$, ו$\text{קול נביחה}$. כאשר יוצרים אובייקט $\text{כלב}$ ספציפי (כמו $\text{באדי}$), תכונות אלו מקבלות את הערכים הספציפיים שלהן.
3. שפות סימון (HTML/XML)
בשפות כמו HTML וXML, תכונות משמשות בתוך תגית כדי לספק מידע נוסף על האלמנט.
- דוגמה: ב-$\text{HTML}$, לתגית התמונה
<img src="dog.jpg" alt="A golden retriever">יש שתי תכונות: $\text{src}$ (מקור) ו$\text{alt}$ (טקסט חלופי), המספקות מידע חיוני שאינו תוכן על אלמנט התמונה.
סוגי תכונות
ניתן לסווג תכונות בדרכים רבות, אך במודלי נתונים, הסוגים העיקריים קשורים לאופן שבו ערכיהן נגזרים או לתפקיד שהן ממלאות:
1. תכונות פשוטות מול מורכבות
- תכונה פשוטה: לא ניתנת לפירוק לרכיבים קטנים יותר. (לדוגמה: $\text{גיל}$, $\text{צֶבַע}$).
- תכונה מורכבת: ניתנת לחלוקה לחלקי-משנה, שלכל אחד מהם משמעות משלו. (לדוגמה: $\text{כתובת}$ יכולה להתפרק ל$\text{רחוב}$, $\text{עיר}$, $\text{מדינה}$, $\text{מיקוד}$).
2. תכונות בעלות ערך יחיד מול מרובה-ערכים
- ערך יחיד: יכולה להכיל רק ערך אחד עבור ישות נתונה. (לדוגמה: לאדם יכול להיות רק $\text{מספר תעודת זהות}$ אחד).
- מרובת-ערכים: יכולה להכיל מספר ערכים עבור ישות יחידה. (לדוגמה: לאדם יכולות להיות מספר $\text{מספרי טלפון}$ או של$\text{מוצר}$ יכולות להיות מספר $\text{צבעים}$ זמינים). הערה: מסדי נתונים מטפלים בדרך כלל בתכונות מרובות-ערכים על ידי שימוש בטבלאות נפרדות ומקושרות כדי לשמור על שלמות הנתונים.
3. תכונות מאוחסנות מול נגזרות
- תכונה מאוחסנת: הערך מאוחסן במפורש במסד הנתונים. (לדוגמה: $\text{תאריך לידה}$).
- תכונה נגזרת: הערך מחושב או נגזר מתכונות מאוחסנות אחרות ואינו מאוחסן ישירות. (לדוגמה: $\text{גיל}$ נגזר על ידי חישוב ההפרש בין התאריך הנוכחי ל$\text{תאריך לידה}$). תכונות נגזרות חוסכות מקום אחסון ומונעות חוסר עקביות, אך הן דורשות חישוב בכל פעם שפונים אליהן.
4. תכונות מפתח (מזהה)
תכונת מפתח היא תכונה מיוחדת (או קבוצת תכונות) שערכה ייחודי עבור כל מופע ישות. היא משמשת כמזהה חובה.
- דוגמה: $\text{מספר סטודנט}$ ברשימת סטודנטים במכללה. זה מבטיח שניתן להבחין באופן ייחודי בין כל סטודנט לכל סטודנט אחר.
⚙️ איך תכונות פועלות
תכונה פועלת על ידי הגדרת תחום (Domain) ומבנה.
1. הגדרת התחום (סוג הנתונים)
לכל תכונה יש להקצות סוג נתונים, המגדיר את התחום – קבוצת הערכים המותרים – שהתכונה יכולה להכיל. זה חיוני לשלמות הנתונים ועיבוד מדויק.
| תכונה | סוג נתונים | ערכי דוגמה |
| $\text{שם פרטי}$ | מחרוזת/טקסט | "אליס," "בוב" |
| $\text{מחיר}$ | צף/עשרוני | 99.99, 10.00 |
| $\text{במלאי}$ | בוליאני | $\text{אמת}$ או $\text{שקר}$ |
| $\text{תאריך הזמנה}$ | תאריך/זמן | $\text{2025-10-20}$ |
2. אכיפת אילוצים
לתכונות יש לרוב אילוצים המגבילים את הערכים עוד יותר מסוג הנתונים. כללים אלו אוכפים לוגיקה עסקית:
- לא ריק (NOT NULL): חייב להיות ערך לתכונה (לא יכולה להיות ריקה).
- ייחודי (UNIQUE): כל ערך בעמודה חייב להיות שונה מהאחרים (משמש למפתחות מועמדים).
- בדיקה (CHECK): ערך חייב ליפול בטווח מוגדר (לדוגמה: $\text{גיל}$ חייב להיות $\text{> 18}$).
- שלמות הפניה (מפתחות זרים): תכונה בטבלה אחת חייבת להתאים לערך מפתח בטבלה אחרת, ובכך ליצור קשר.
כאשר מוזנים נתונים, המערכת בודקת אם הערך המוצע תואם לתחום ולאילוצים של התכונה. אם הבדיקה נכשלת, הרישום נדחה, וכך התכונות שומרות על האיכות והעקביות של הנתונים.
יתרונות ו חסרונות
יתרונות השימוש בתכונות
- מבנה וארגון: תכונות ממירות נתונים גולמיים למבנה לוגי ומובן (הסכמה). זו מטרתו המרכזית של מסד נתונים או מחלקת OOP.
- שלמות נתונים (Data Integrity): על ידי אכיפת סוגי נתונים ואילוצים (כמו $\text{NOT NULL}$ או $\text{UNIQUE}$), תכונות מבטיחות שהנתונים מדויקים, שלמים ועקביים.
- יעילות בשליפה: נתונים מובנים המבוססים על תכונות ברורות מאפשרים שאילתות מהירות ומדויקות הרבה יותר (לדוגמה: "מצא את כל ה$\text{מוצרים}$ שבהם $\text{צבע}$ הוא $\text{אדום}$").
- שימוש חוזר: ניתן לעשות שימוש חוזר בהגדרות התכונה (הסכמה) עבור אינספור ישויות (רשומות) ללא צורך להגדיר מחדש את המאפיינים בכל פעם.
- בהירות ותקשורת: מערך מוגדר היטב של תכונות משמש כמילון לנתונים, ומקל על מפתחים, אנליסטים ומשתמשי קצה להבין מה הנתונים מייצגים.
חסרונות ואתגרים
- קשיחות (במערכות יחסיות): שינוי או הוספת תכונה חדשה במסד נתונים יחסי גדול ומבוסס יכול להיות מורכב וגוזל זמן, ולעיתים מצריך השבתה זמנית של המערכת כולה (העברת סכמה).
- תקורה לנתונים דלילים: אם לישות יש מאות תכונות אפשריות, אך רוב הישויות משתמשות רק בחלק קטן מהן (מה שיוצר הרבה ערכי $\text{NULL}$), המבנה הקשיח יכול להיות לא יעיל, הן באחסון והן בביצועי השאילתה.
- מורכבות המידול: הגדרת המערך הנכון של תכונות ויחסיהן (נורמליזציה) עבור מערכת עסקית מורכבת דורשת מומחיות ומאמץ ראשוני משמעותי כדי לבצע זאת כראוי.
לסיכום, התכונה היא המושג הבסיסי שממיר עובדות לא מובנות למידע מאורגן, משמעותי וניתן לעיבוד. זו העדשה התיאורית שדרכה אנו צופים ומטפלים בנתונים.
«חזרה לאינדקס המונחים
