ABA


"צריך עזרה בתכנון של דטאבייס + STORED PROCEDURE"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #15947 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15947
ליל קיץ לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.10
10048 הודעות, 7 פידבק, 14 נקודות
   14:01   20.12.10   
אל הפורום  
  צריך עזרה בתכנון של דטאבייס + STORED PROCEDURE  
 
   אני אנסה לתמצת את זה ולפשט כי העיקרון די מסובך...
זה ישמע דבילי במתכונת הנוכחית אבל יש רעיון שעומד מאחורי זה.

בואו ונניח ויש לי טבלה של "מצרכים לעוגות".
לכל עוגה אני מפרט לפרטי פרטים את כל המצרכים השונים שצריך כדי להכין אותה .
בוא ונניח וכרגע יש לי 2 עוגות במאגר -

עוגת קינמון - מכילה :
ביצים, קינמון, קמח, חלב.

עוגת חצילים - מכילה :
ביצים, חצילים, שעועית.

עוגת בוטנים - מכילה :
ביצים, קינמון, קמח, חלב, בוטנים.

(אחלה מתכונים, תנסו בבית).

מצד שני, יש לי רשימה של מצרכים שכרגע יש לי בבית,
בואו ונניח ויש לי :
ביצים, קינמון, קמח , חלב.

אני רוצה להריץ STORED PROCEDURE שייקח את כל המצרכים שקיימים לי ופירטתי כאן,
וימצא באחוזים מה העוגות שאני יכול להכין מהמצרכים שעשיתי.

במקרה שלנו ,
עוגת הקינמון תהיה - 100%, כי כלל המרכיבים שלה הם מה שקיים לי, ואני יכול להכין את העוגה בלי בעיה.
עוגת הבוטנים תהיה במקום השני, והיא תעמוד בערך על 80%, כי חסר לי רק מצרך אחד כדי לעשות אותה (בוטנים).
עוגת החצילים תעמוד במקום השלישי עם בערך 33%, כי אמנם יש לי ביצים, אבל חסר לי חצילים ושעועית.

אשמח אם מישהו יוכל לעזור לי לבצע את זה בצורה האופטימלית.


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  המ... אתה יכול ליצורטבלאות בפורמט כזה: Ice Cold  20.12.10 15:46 1
     תודה על התשובה אבל עשיתי טעות ליל קיץ 20.12.10 16:55 2
         אאוץ', כן, פרט קטן ושולי.... אמ... לא חושב שיש מנוס Ice Cold  20.12.10 17:02 3
             בעייתי ליל קיץ 20.12.10 17:07 4
                 חוששני שכאן תצטרך לחכות למישהו שמבין יותר ב-SQL :/ Ice Cold  20.12.10 17:17 5
         בעייתי טיפה, אבל לא בלתי אפשרי, akoka2 20.12.10 17:52 6
             איבדתי אותך יוחאי ליל קיץ 20.12.10 18:32 7
                 בטח, akoka2 20.12.10 21:30 8

       
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק, 36 נקודות
   15:46   20.12.10   
אל הפורום  
  1. המ... אתה יכול ליצורטבלאות בפורמט כזה:  
בתגובה להודעה מספר 0
 
טבלת products שמכילה ID ושם. זוהי טבלה שמרכז את כל המצרכים שיכולים להיות לך במטבח בלי קשר לאם יש לך אותם כרגע או לא.

טבלת receipe_products: עבור כל מצרך במתכון תהיה רשומה משלה. למשל:
מתכון X מוצר Y1
מתכון X מוצר Y2
וכו'.

וכמובן current_products שכרגע יש לך בבית. מבחינתך שיהיו שם אפילו רק ID. אולי גם כמויות אם אתה רוצה.

ואז כל מה שנשאר לך לעשות זה COUNT על receipe_products לאותו מתכון, ובנוסף לזה שאילתא של not in:


select count(*) from current_products where product_id in (select product_id from receipe_products where receipe_id=1)

אם ה-COUNT הראשון זהה לשני, אז יש לך את כל המוצרים. אם לא, תעשה COUNT2 חלקי COUNT1 ותקבל את האחוזים


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ליל קיץ לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.10
10048 הודעות, 7 פידבק, 14 נקודות
   16:55   20.12.10   
אל הפורום  
  2. תודה על התשובה אבל עשיתי טעות  
בתגובה להודעה מספר 1
 
   שכחתי פרט מאוד קריטי.

אני צריך לצאת מתוך נקודת הנחה ספציפית -
בוא ונניח ויש ברשותי כרגע 10 ביצים, 2 (קילו) קמח, ו - 1 קופסאת שוקולד.

המטרה שלי היא - להפטר ממה שיש לי הכי הרבה.

זאת אומרת -
דירוג של עוגה שמבחינתי תהיה 100%, היא כזו שיש בה כמה שיותר ביצים , קמח ושוקולד.
אם הבנת את כוונתי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק, 36 נקודות
   17:02   20.12.10   
אל הפורום  
  3. אאוץ', כן, פרט קטן ושולי.... אמ... לא חושב שיש מנוס  
בתגובה להודעה מספר 2
 
מלמיין את המתכונים לפי כמות המצרכים שלהם בסדר יורד, ואז לעבור מתכון מתכון ולבצע את הלוגיקה שאני כתבתי...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ליל קיץ לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.10
10048 הודעות, 7 פידבק, 14 נקודות
   17:07   20.12.10   
אל הפורום  
  4. בעייתי  
בתגובה להודעה מספר 3
 
   נניח ויש לי באתר 100 אלף מתכונים לעוגות,
אתה לא חושב שזה טיפה לא יעיל ?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק, 36 נקודות
   17:17   20.12.10   
אל הפורום  
  5. חוששני שכאן תצטרך לחכות למישהו שמבין יותר ב-SQL :/  
בתגובה להודעה מספר 4
 
פה בערך נגמרים לי הרעיונות,


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

דרג אמינות חבר זה
   17:52   20.12.10   
אל הפורום  
  6. בעייתי טיפה, אבל לא בלתי אפשרי,  
בתגובה להודעה מספר 2
 
   הרעיון הבסיסי הוא באמת למיין את המוצרים לפי כמות, אין יותר מדי דרכים לייעל את זה.

עכשיו אפשר ליצור שדה נוסף נקרא לו order ובגישה הראשונה נניח אחרי שאתה ממיין, ו"משתמש" במוצרים, פשוט תסמן את המוצרים מ1 עד n לפי הכמות המקסימלית, אני חושב שיהיה נכון אפילו לאנדקס את השדה הזה.

זה רעיון טיפה יבש, אבל יש מצב שהוא יעבוד.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ליל קיץ לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.10
10048 הודעות, 7 פידבק, 14 נקודות
   18:32   20.12.10   
אל הפורום  
  7. איבדתי אותך יוחאי  
בתגובה להודעה מספר 6
 
   תוכל לפרט קצת יותר ?


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

דרג אמינות חבר זה
   21:30   20.12.10   
אל הפורום  
  8. בטח,  
בתגובה להודעה מספר 7
 
   הבעיה שלך היא לא להציג את האחוז של המוצרים שיש לך להכנת מתכון מסויים, זה באמת שטויות, הבעיה שלך היא להשתמש במה שיש לך הכי הרבה בדרך הכי אופטימלית.

זה קצת בעיה לפשט את הרעיון יותר ממה שפישטתי, אבל אני אנסה בכו"ז:

יש לנו את טבלת מוצרי המכולת שלנו:

products
--------
p_id
p_name
p_count
p_order

טבלת המתכונים שלנו:

recipes
-----------
rec_id
rec_name

טבלת המוצרים לכול מתכון:

recipes_products
-------------------
rec_id
rec_pid

עכשיו הרעיון בp_order הוא לא סתם לזרוק מספר מ1 עד n, הרעיון הוא לדרג דרכו את עדיפות המוצרים ע"פ count, הוא יישמש בדיוק כמו אינדקס.

p_count ייסמן בשבילנו את הכמות.
p_order ייסמן את העדיפות לפי הכמות.

עכשיו המיון מפה לא אמור ליהיות מסובך, כול מה שאתה תצטרך לעשות, זה בכול שימוש במתכון לעדכן את הindex ואת הכמות, ובשליפה פשוט לעבוד לפי האינדקס.

רוב השליפות לא יעלו לך יותר מO(1), הדבר היחידי שעוד יכול לעלות לך קצת, זה העדכון של הindex כול פעם, אבל גם את זה תוכל להריץ ברקע באמצעות איזה cron task.

מקווה שלא הלכת לאיבוד, קצת מסורבל אבל אמור לעבוד.


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

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

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



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