לגבי שימוש ב auto increment

  • פותח הנושא ehma
  • פורסם בתאריך

ehma

New member
לגבי שימוש ב auto increment

היי

1. הבנתי שכאשר משתמשים ב Surrogate key ה best practice זה להשתמש ב auto increment. האם כאשר עובדים עם Surrogate key אתם באמת עובדים כך?

2. יש לי עניין כזה - נניח שיצרתי טבלה עם auto increment עבור ה PK שלה, ואחר כך קישרתי אותו לטבלה אחרת שבה הוא FK, ז"א, שגם שם הוא auto increment.
העניין המרגיז הוא שעכשיו אני לא יכול להשתמש ב PK של הטבלה השנייה עם auto increment כי זה נתפס ע"י השדה של ה FK. קונספטואלית, איך מתגברים על זה ?
 

גרי רשף

New member
תשובות

1. כן, ובמספר מקמות עבודה.
&nbsp
2. לא הבנתי: יש 2 טבלאות שיש בינהן יחס של אחת לרבים. בצד האחת יש מיספור אוטומטי בתור מפתח ראשי, ובצד השני יש עמודה שאינה מיספור אוטומטי מכיוון שזה צד הרבים ומופיעים שם מספרים מצד האחת..
לא צריכה להיות בעייה להגדיר עמודה אחרת בתור המפתח הראשי של הטבלה שבצד הרבים, ושהיא תהיה עם מספור אוטומטי.
היכן הבעייה?
 

ehma

New member
תודה רבה + הסבר לגבי השאלה השנייה

אני עובד עם MYSQL, כאשר אני רוצה לבצע קישור בין שתי טבלאות יחיד לרבים (PK-FK), אז הוא אומר שמאפייני השדות (ה PK-FK) בעמודות שבשתי הטבלאות חייבים להיות זהים בניהם (אי אפשר ליצור קישור בלי זה)
ז"א, אני *לא יכול* שיהיה A_I בטבלה של ה PK, אבל שלא יהיה A_I בעמודת ה FK בטבלה השנייה . . .

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

עכשיו, אם תגיד לי שזה עניין ייחודי של MYSQL ,או עניין של ה DB ENGINE, אז אשנה את זה.

תודה
 

גרי רשף

New member
אינני מכיר את MySQL

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