בערך כמו ההבדל בין אבטיח לפרי.
>> כל מפתח צריך להיות ייחודי אבל לא כל טור עם מגבלת יחודיות צריך להיות מפתח.
>> מפתח יכול להיות בנוי מכמה טורים שביחד נותנים את הייחודיות.
>> ניתן לקבוע גם תנאי ייחודיות על שילוב של כמה טורים. אחת השיטות הנפוצות היא שימוש בפונקציה. אני מאוד ממליץ לקרוא את המאמר הבא על באג שיש בשרתי SQL כבר הרבה שנים, בנושא זה:
http://ariely.info/Blog/tabid/83/En...Function-In-Constraint-can-lead-to-a-BUG.aspx
>>
מפתח משמש לזיהוי היישות (Entity) או במילים פחות מsוייקות אבל יותר מובנות, הוא משמש לזיהוי הרשומה ב SET שלנו, ועוד פחות מדוייק ויותר עממי זה להגיד שהוא משמש לזיהוי השורה בטבלה.
** אני מאוד ממליץ לעבור על השרשור הבא. זה דיון שנערך בפורום MSDמ העולמי על ידי מספר מובילים בתחום, תוכל לקבל התרשמות אולי על המשמעות של מפתח primary key vs surrogate key
https://social.msdn.microsoft.com/F...t-out-from-iso-table-design?forum=transactsql
*** בשביל מה שאתה מתאר, אתה צריך תנאי ייחודיות על הטור שאתה לא רוצה שיהיה בו כפילויות (דרך אגב לא הגיוני וזו פרצת אבטחה גדולה מאוד לקבוע שהטור של ססמה הוא טור ייחודי! זה יאפשר למשתמשים לדלות ססמאות בצורה מאוד פשוטה)
*** המפתח שלך הוא טור ID גרך אגב.