ABA


"שאלת הגיון בSQL, תכנון טבלאות"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #14667 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 14667
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   20:10   11.12.08   
אל הפורום  
  שאלת הגיון בSQL, תכנון טבלאות  
 
   שלום לכולם,
אני מפתח זה כבר 5-6 שנים בPHP. ובכל זאת נתקל לפעמים בקשיים של תיכנון טבלה. ולכן אני פונה אליכם איך אתם הייתם עושים את זה...

אם יש לי טבלה של סרטים
וטבלה של שמות שחקנים

איך אתם מקשרים בין שני הטבלאות (שתזכרו שלכל סרט יש יותר משחקן אחד...)

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

בתודה מראש!


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אין לך יותר מדי אופציות Kent Net 11.12.08 20:26 1
  אממ על IN וNOT IN שמעת? akoka 11.12.08 20:37 2
     חיזוק :} Sn00py  11.12.08 21:04 3
     יש עם זה בעיה בmysql! CaTz 11.12.08 21:34 4
         יכול ליהיות שאתה צודק ,אבל אני עובד ככה בגירסא האחרונה akoka 12.12.08 08:53 9
     אני ממש לא ממליץ Kent Net 11.12.08 22:12 5
     תגיד לי אתה השתגעת ? אתה יודע מה זה לנהל דבר כזה? Ice Cold  11.12.08 23:07 6
         מה:S אני עדין לא מבין מה הבעיה שמישהו יעיר אותי:| akoka 12.12.08 08:47 8
  אמ.. djME 12.12.08 02:24 7
  רק טבלה שלישית! כל שאר הפתרונות ידפקו אותך בסוף עידן_הכלי 12.12.08 16:08 10
     תגובה.. lior066 12.12.08 22:29 11
         ראסמי.. Groove 13.12.08 17:56 12
  זה נקרא טבלאת Many to Many אם אנלא טועה... טבלה שלישית שמקשרת DLN 13.12.08 19:37 13
  טבלה מקשרת עם חיבור של יחיד אל רבים MoonHunter 13.12.08 20:53 14
     בMYSQL אין ממש הגדרה לFOREIGN KEY akoka 13.12.08 21:13 15

       
Kent Net
חבר מתאריך 18.3.02
2359 הודעות
   20:26   11.12.08   
אל הפורום  
  1. אין לך יותר מדי אופציות  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 11.12.08 בשעה 20:28 בברכה, Kent Net
 
כדי שהתכנון יהיה יעיל אתה חייב קודם כל לצאת מנקודת הנחה שאתה חייב טבלה של שחקנים ושל סרטים.

רבים לרבים.

יש 2 אופציות עיקריות

או להגדיר מראש שלסרט יש 5 שחקנים קבועים ולא יותר,
לתת 5 שדות actor1 actor2 actor3... בתוך הטבלה של הסרטים,
ובתוכם ה ID של השחקנים.

או כמו שאמרת לתת טבלה מקשרת של ID סרט ו ID שחקן.
הרבה נתונים, כן, אז מה?

אני הולך על האופציה השנייה, לא אוהב להיות מוגבל. לך תדע מה יהיה אחר כך.

רוצים גם אתם חתימת פז"ם ? https://.net/


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   20:37   11.12.08   
אל הפורום  
  2. אממ על IN וNOT IN שמעת?  
בתגובה להודעה מספר 0
 
   אתה עושה שדה של PLAYERS בטבלה של הסרטים ומכניס את כול הID של השחקנים מופקדים בפסיק ואז ניגש לMYSQL וקורא על IN וNOT IN.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   21:04   11.12.08   
אל הפורום  
  3. חיזוק :}  
בתגובה להודעה מספר 2
 
  

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   21:34   11.12.08   
אל הפורום  
  4. יש עם זה בעיה בmysql!  
בתגובה להודעה מספר 2
 
   אני עקרונית עושה את זה עכשיו... אבל זה פשוט לא מביא לי את כל התוצאות!
זה מביא לי רק את ההסרטים שבהם השחקן שחיפשתי מופיע כ id הראשון במחרוזת.

כלומר, אם יש לי שחקן שהID שלו זה 15

ויש לי מחרוזות של סרטים (שמציינים לי שחקנים)
כאלו

סרט1:
15,25,222,154,744,655
סרט 2:
552,15,844
סרט 3:
54,6665,15

ואני מריץ שאילתה כזו:

Select * From movies Where 15 In (actors_field)

זה מחזיר לי רק את הסרט הראשון...
חוץ מזה שאלתי בערוץ של MYSQL במירק, והם תותחים שם, והם אמרו שיש בעיה עם IN בMYSQL.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   08:53   12.12.08   
אל הפורום  
  9. יכול ליהיות שאתה צודק ,אבל אני עובד ככה בגירסא האחרונה  
בתגובה להודעה מספר 4
 
   של MYSQL וזה לא קורה לי.

אממ 15 משתנה לתא player_id מהטבלת שחקנים נכון?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Kent Net
חבר מתאריך 18.3.02
2359 הודעות
   22:12   11.12.08   
אל הפורום  
  5. אני ממש לא ממליץ  
בתגובה להודעה מספר 2
 
   אחרי זה לנהל את רשימת השחקנים זה סיפור מייאש


רוצים גם אתם חתימת פז"ם ? https://.net/


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   23:07   11.12.08   
אל הפורום  
  6. תגיד לי אתה השתגעת ? אתה יודע מה זה לנהל דבר כזה?  
בתגובה להודעה מספר 2
 
חלום בלהות. רשומה עבור כל סרט לכל שחקן, זה הפתרון הכי נורמלי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   08:47   12.12.08   
אל הפורום  
  8. מה:S אני עדין לא מבין מה הבעיה שמישהו יעיר אותי:|  
בתגובה להודעה מספר 6
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
djME

   02:24   12.12.08   
אל הפורום  
  7. אמ..  
בתגובה להודעה מספר 0
 
   את הפתרון כבר מצאת.. כדיי לעשות דבר כזה כמו שאתה צריך
יש לבנות טבלה שלישית
שיהיה בה את ה id של הסרט ו id של שחקן

זה נכון שהיא תיהיה גדולה אבל אני לא רואה דרך הגיונית יותר לעשות זאת בצורה נוחה וחכמה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

   16:08   12.12.08   
אל הפורום  
  10. רק טבלה שלישית! כל שאר הפתרונות ידפקו אותך בסוף  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

   22:29   12.12.08   
אל הפורום  
  11. תגובה..  
בתגובה להודעה מספר 10
 
   מחזק אחי..
תקשיב , אין לך דרך אחרת לעשות את זה בלי טבלה שלישית ( יש לך מלא דרכים אבל כל דרך מקבעת אותך לסוג עבודה ספציפי ואחרי זה גורמת לך לעבוד הרבה יותר )

הדרך הטובה ביותר כמו שאמרו פה היא להשתמש בטבלה שלישית של ID של השחקן ו ID של הסרט , לעשות קישור גומלין בשאילתת משיכה וזהו אין לך הרבה מה להסתבך זה כולה 2 שדות בכל שורה, כמה שהיא תהיה גדולה וארוכה היא לא תהיה כזאת רצינית כי זאת טבלת אינדקסים וזאת השיטה הנפוצה ביותר לשימוש בדברים שכאלה, אין לך מה להסתבך , אתה לא אמור לפחד מהגודל של הטבלה , כיוון שאתה לא הולך ליצור עכשיו טבלה עם 50 שדות שיהיה בה ערכים של STRING וכדומה , יש לך 2 שדות של INTEGER, שזה לא אמור להיות כל כך גרוע , ואם אתה יכול להגביל את הגודל של הטבלה כאשר אתה יודע פחות או יותר כמה שחקנים יש לך תתחיל מ TINYINT ואם יהיה צורך והמסד יגדל תעביר את הטבלה ל INTEGER.

בהצלחה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Groove
חבר מתאריך 6.8.11
219 הודעות
   17:56   13.12.08   
אל הפורום  
  12. ראסמי..  
בתגובה להודעה מספר 11
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   19:37   13.12.08   
אל הפורום  
  13. זה נקרא טבלאת Many to Many אם אנלא טועה... טבלה שלישית שמקשרת  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MoonHunter
חבר מתאריך 1.8.02
680 הודעות
   20:53   13.12.08   
אל הפורום  
  14. טבלה מקשרת עם חיבור של יחיד אל רבים  
בתגובה להודעה מספר 0
 
   move id
actor id
תשתמש בforeign key עבור 2 השדות.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   21:13   13.12.08   
אל הפורום  
  15. בMYSQL אין ממש הגדרה לFOREIGN KEY  
בתגובה להודעה מספר 14
 
   פשוט לא מגדירים מפתח ,אפשר להגדיר FOREIGN KEY רק במידה והטבלה שלו מבוססת INNO DB ובמידה והיא מבוססת INNODB יש לזה את החסרונות של זה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net