לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 21-02-2006, 15:20
  GreenBerret GreenBerret אינו מחובר  
 
חבר מתאריך: 13.12.05
הודעות: 1,963
נתוני הצבעות - שאלה לוגית

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


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

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

תודה רבה.

נערך לאחרונה ע"י GreenBerret בתאריך 21-02-2006 בשעה 15:22.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #13  
ישן 23-02-2006, 06:56
  AlexKarpman AlexKarpman אינו מחובר  
 
חבר מתאריך: 20.12.01
הודעות: 20,962
מצטער, עמידה ב-1NF זה ממש לא דבר שולי
בתגובה להודעה מספר 12 שנכתבה על ידי GreenBerret שמתחילה ב "אני אסכם את מה שנאמר באשכול,..."

היית אומר לי שאתה מוותר על 5NF. ניחא(וגם זה בקושי).
1NF זה הבסיס. הבסיס של הבסיס. הבסיס של הבסיס של הבסיס.

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

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

במקרה של עיצוב מסדי-נתונים יש צורה נכונה לעשות את הדברים. היא לא נכונה
כי אני אמרתי, אלא נכונה כי המתמטיקה אמרה. אתה רוצה לשחק אותה "וואלק
אני יותר חכם מכולם, למה מי זה הקוד הזה מה הוא יודע בכלל על מסדי-נתונים?!",
סבבה לך. אני אשאר פחות חכם, ואעבוד לפי שיטות שאנשים שיודעים דבר או
שניים פיתחו....

נערך לאחרונה ע"י AlexKarpman בתאריך 23-02-2006 בשעה 07:07. סיבה: ותודה לדקל :)
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 23-02-2006, 13:49
  GreenBerret GreenBerret אינו מחובר  
 
חבר מתאריך: 13.12.05
הודעות: 1,963
בתגובה להודעה מספר 13 שנכתבה על ידי AlexKarpman שמתחילה ב "מצטער, עמידה ב-1NF זה ממש לא דבר שולי"

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

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

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

כמו שאמרתי, ב99% מהנושאים אתה צודק, במקרה הזה, אין צורך לפי דעתי ואפילו עדיף בלי.

נערך לאחרונה ע"י GreenBerret בתאריך 23-02-2006 בשעה 13:54.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #15  
ישן 23-02-2006, 14:16
  AlexKarpman AlexKarpman אינו מחובר  
 
חבר מתאריך: 20.12.01
הודעות: 20,962
שוב אתה לוקח לעצמך את תפקיד הפסיכולוג בגרוש, וגם את זה אתה לא עושה טוב...
בתגובה להודעה מספר 14 שנכתבה על ידי GreenBerret שמתחילה ב "כן, אבל גם בחוקים של מתמטיקה,..."

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

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

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

אבל בעצם, אתה מוזמן לעשות מה שבא לך. זו מערכת שלך, אם בא לך לכתוב אותה עקום,
עשה זאת. אתה יכול לעשות מה שבא לך(כולל אחסון CSV בתוך שדה BLOB ענק אחד),
הכל, חוץ מלספר לי מה אני יודע ומה לא.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #16  
ישן 23-02-2006, 14:21
  GreenBerret GreenBerret אינו מחובר  
 
חבר מתאריך: 13.12.05
הודעות: 1,963
בתגובה להודעה מספר 15 שנכתבה על ידי AlexKarpman שמתחילה ב "שוב אתה לוקח לעצמך את תפקיד הפסיכולוג בגרוש, וגם את זה אתה לא עושה טוב..."

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

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


עריכה: אתה יודע מה, העקשנות (הרוסית) שלך, שכנעה אותי. גם את הדבר הכי דבילי אכתוב ככה (ולו גם בשביל הלמידה).
ואני אטריד אותך בעתיד, לגבי שאילתה אחת שתוציא לי את הכל במכה

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

מה ת'אומר?

נערך לאחרונה ע"י GreenBerret בתאריך 23-02-2006 בשעה 14:43.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #17  
ישן 23-02-2006, 15:50
  AlexKarpman AlexKarpman אינו מחובר  
 
חבר מתאריך: 20.12.01
הודעות: 20,962
לא. אני לא אוהב "להתנגח באנשים", מקסימום להתנגח עם אנשים, או לנגח אנשים...
בתגובה להודעה מספר 16 שנכתבה על ידי GreenBerret שמתחילה ב "אתה אוהב להתנגח באנשים, גם..."

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



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

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

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

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

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 15:46

הדף נוצר ב 0.06 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר