דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. mssql - איך לנהל/לרשום 'זיהוי לקבוצת רשומות' בצורה נכונה

mssql - איך לנהל/לרשום 'זיהוי לקבוצת רשומות' בצורה נכונה

מתוזמן נעוץ נעול הועבר תכנות
4 פוסטים 3 כותבים 214 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • M מנותק
    M מנותק
    mekev
    כתב ב נערך לאחרונה על ידי
    #1

    צד לקוח: אנגולר
    צד שרת: node.js
    מסד נתונים: mssql

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

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

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

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

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

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

    אפשרות ד:
    ?

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #2

      כל האפשרויות נכונות בהתאם לצורך.
      פה, החלק שלא הכי נהיר לי זה הקשר בין ההצעות מחיר. הרי יש מהות לקשר הזה, זה יכול להיות זמן, זה יכול להיות זמן + יוזר, זה יכול להיות בכלל משהו מהותי יותר, ואז יש אפילו מצב שבמשך הזמן יתעורר לך צורך להוסיף מאפיינים נוספים לקבוצה שזה ממש נותן לגיטימציה לאפשרות א.
      אם למשל הקשר הוא המציע+הזמן, למה שזו לא תהיה עמודה/ות שיהוו מזהה? אפשר גם להפוך את המידע הזה למזהה באפליקציה, למשל להוציא מזה גיבוב MD5 וכדומה.
      אפשרות ב' היא הכי פחות מעניינת. את הבעיה של הבו זמניות ניתן לפתור בקלות על ידי משפט מתאים של SQL (שימוש בטרנזקציה ונעילת טבלה).
      אפשרות ג' היא סופר לגיטימית אבל לא עם RANDOM אלא עם GUID. בעוד במספר אקראי יש אפשרות (זניחה עד אפסית) של שני מזהים שונים, בGUID יש גם את התאריך מלבד האקראיות, ולכן זה ייחודי ברמה גבוהה. זה גם מקובל מאוד לשימוש וגם נתמך מובנה בC# וגם בSQL SERVER.

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      M תגובה 1 תגובה אחרונה
      1
      • M מנותק
        M מנותק
        mekev
        השיב לdovid ב נערך לאחרונה על ידי
        #3

        @dovid
        יישמתי את המלצתך
        השתמשתי בUUID (כאמור צד שרת: node.js)

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

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

        במידה והלקוח מעוניין בהצעות מחיר נוספות
        אני כמובן יכול לשייך אותם לאותו UUID במקום ליצור חדש

        צדיק תמיםצ תגובה 1 תגובה אחרונה
        0
        • צדיק תמיםצ מנותק
          צדיק תמיםצ מנותק
          צדיק תמים
          השיב לmekev ב נערך לאחרונה על ידי
          #4

          @mekev כתב בmssql - איך לנהל/לרשום 'זיהוי לקבוצת רשומות' בצורה נכונה:

          השתמשתי בUUID (כאמור צד שרת: node.js)

          כמו שכתוב בדף הספריה, אתה יכול להשתמש ב crypto.randomUUID שמובנה בnodejs

          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
          טיפים

          תגובה 1 תגובה אחרונה
          2

          בא תתחבר לדף היומי!
          • התחברות

          • אין לך חשבון עדיין? הרשמה

          • התחברו או הירשמו כדי לחפש.
          • פוסט ראשון
            פוסט אחרון
          0
          • דף הבית
          • קטגוריות
          • פוסטים אחרונים
          • משתמשים
          • חיפוש
          • חוקי הפורום