שאלה SQL ית

patael

New member
שאלה SQL ית

נניח שיש לי 2 טבלאות מקושרות, והחלטתי כמנהל מערכת לשנות את אחת החוליות המקשרות, למשל : יש לי 50 ספרים בתוך המערכת שמוגדרים כ"ספרי מתח", הביטוי ספרי מתח זו חוליה מקשרת בין הטבלאות. הבעיה היא שבתוך הטבלה עם פרטי הספרים ישנם 50 ספרים שצריך להחליף להם את החוליה המקשרת. מובן? איך עושים זאת? שאלה זו מופיעה גם ב IOL.
 

orenphp

New member
מובן... אבל

תכנות נכון, פירושו היגיון בריא ותכנון נכון(!). כאשר אתה רוצה לקשר בין טבלאות, הרעיון הוא שהטבלה האחת תיהיה מעין "בן" של השנייה (לפי רעיון של עצים). כלומר תקשר בין "ספרי מתח" בטבלה האחת לבין הטבלה השנייה, לא באמצעות שם אלא באמצעות מספר (id) השורה. table 1: id name table 2: childof (from table 1) description id כך תוכל לשנות את השם בקלות והמספר ישאר כקבוע. שוב, לפני שאתה ניגש לסדר את הבעיה הנוכחית, אולי תחשוב לשנות את המבנה, זה יחסוך לך המון בעיות בעתיד. מקווה שעזרתי. אורן
 

patael

New member
לא כ"כ מובן לי...

לא כ"כ מובן, אני , הקשוריות שלי בין הטבלאות היא נבנית במהלך תפעול המערכת, לא בבנייתה, כלומר: כאשר מנהל המערכת נגיד ירצה להכניס לחנות הספרים (המקוונת) שלו ספר חדש, יש לו טופס המבקש את שם הספר, תמונה וסוג הספר. סוג הספר נלקך מתוך טבלה בבסיס הנתונים, מעין טבלת סוגים, נניח שהוא בחר בסוג "ספר מתח" אזי ה ID של ספר המתח יכנס לרשומה של הספר החדש, כלומר יחד עם שם הספר והתמונה, יכנס גם ה ID של סוג הספר. כך אני עובד, אם זה לא נכון, או מסורבל, אשמח מאד לעצה. עכשיו אתה מבין את הבעייתיות בלמחוק "סוג ספר" מטבלת סוגים? אם הוא ימחק, מה קורה עם כל הספרים שעד עכשיו קיבלו את הסוג "ספר מתח" ועכשיו הוא לא קיים יותר? חשבתי לפתור זאת עם עדכון, ואז, ברגע שיעודכן סוג מסויים, אציג הודעה למנהל המערכת, שכל הספרים שעד עתה קיבלו את הערך "ספר מתח" מעכשיו יהיו מה שהוא יעדכן, למעשה אני כמתכנת לא עושה כלום, כי ה ID בטבלת הספרים אינו משתנה… אבל נראה לי בעייתי משהו… אשמח לעיצה.
 

orenphp

New member
אוקי.... אולי זה יעזור

בעיקרון, לפי מה שתיארת לי עד כה, שינוי הטבלה הראשונה - כלומר שינוי של "ספר מתח" ל"ספר אחר" לדוגמא, לא צריך לשנות את הקישוריות מאחר וה(ID) מקשר בינהם ולא השם. אם אתה צריך עוד עזרה אנא צור איתי קשר באי מייל או באי סי קיו (שלח לי הודעה לתא הפרטי)
 
למעלה