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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. התייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת

התייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת

מתוזמן נעוץ נעול הועבר תכנות
18 פוסטים 6 כותבים 304 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • clickoneC מנותק
    clickoneC מנותק
    clickone
    כתב ב נערך לאחרונה על ידי clickone
    #1

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

    הדרישה היא שכל משתמש בתוכנה יוכל לבנות לעצמו שדות.
    אני מתלבט בין 2 תצורות:

    1. להוסיף בטבלה X שדות, ולתת למשתמש לשלוט על הכותרות.
      כמובן שמחכה לי טיפול בסוגי הנתונים 😮
    2. לעשות טבלת MetaData עם הגדרת שדות לכל לקוח, ומשם למשוך לכל איש קשר, ולתצוגת הטבלה.
      גם שם אצטרך להתמודד עם סוג הנתונים.
      שם יש לי 2 דרכים:
    • הכל יישמר כטקסט ואני יעשה את ההמרה לפי העניין. (נשמע לי לא יעיל בכלל וקצת מטופש)
    • לעשות 4 עמודות ערך, תאריך, מספר, טקסט, בוליאן ולשמור בעמודה לפי העניין. (גם נשמע מטופש, אבל פחות מבחינת השמירה, שהרי עמודה שיש בה NULL בקושי תופסת מקום [ככה בעבר יצא לנו כאן בדיון עם הארכי @ארכיטקט ])

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

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

    קוד: C#
    דאטאבייס: SqlServer
    ממשק: Mvc + AngularJs

    תודה לכל מי שיש לו מחשבה מה הוא היה עושה
    אל תהססו להציע דברים אחרים משלכם

    אין טסט כמו פרודקשן.

    המייל שלי urivpn@gmail.com

    clickoneC י 2 תגובות תגובה אחרונה
    2
    • clickoneC מנותק
      clickoneC מנותק
      clickone
      השיב לclickone ב נערך לאחרונה על ידי
      #2

      https://stackoverflow.com/questions/12643117/dynamically-create-columns-sql
      אני אתחיל בינתיים להביא מקורות. עד ש @dovid ישלוף את הפיתרון מהאוב 😮

      אין טסט כמו פרודקשן.

      המייל שלי urivpn@gmail.com

      תגובה 1 תגובה אחרונה
      0
      • י מנותק
        י מנותק
        יוסף בן שמעון
        השיב לclickone ב נערך לאחרונה על ידי
        #3

        @clickone אמר בהתייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת:

        אל תהססו להציע דברים אחרים משלכם

        להחליף מסד נתונים למסד כמו mongoDB, בדיוק בשביל זה נועדו המסדים האלה...

        clickoneC תגובה 1 תגובה אחרונה
        2
        • clickoneC מנותק
          clickoneC מנותק
          clickone
          השיב ליוסף בן שמעון ב נערך לאחרונה על ידי clickone
          #4

          @יוסף-בן-שמעון
          אממממ 😮
          רעיון 😛
          אני דיי בטוח שיש לזה מקבילה טובה בSQL SERVER
          בכל מקרה, השאלה אם מונגו טוב לי לשאר הדברים
          וגם אל תשכח, שזה פרוייקט שנמצא כבר באמצע דרכו. א"א פתאם באמצע העולם להחליף 😮
          מה גם, שEF לא יתמוך בזה.
          ואין סיבה לסבול בכל הפרוייקט בלי EF בשביל הפיצ'ר הזה....

          אין טסט כמו פרודקשן.

          המייל שלי urivpn@gmail.com

          yossizY תגובה 1 תגובה אחרונה
          1
          • yossizY מחובר
            yossizY מחובר
            yossiz
            השיב לclickone ב נערך לאחרונה על ידי yossiz
            #5

            @clickone אמר בהתייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת:

            מה גם, שEF לא יתמוך בזה.

            אם מותר לי לשאול, מה זה EF?
            עריכה: entity framework?

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            תגובה 1 תגובה אחרונה
            0
            • clickoneC מנותק
              clickoneC מנותק
              clickone
              כתב ב נערך לאחרונה על ידי
              #6

              @yossiz כן.
              EF זה entity framework

              אין טסט כמו פרודקשן.

              המייל שלי urivpn@gmail.com

              תגובה 1 תגובה אחרונה
              1
              • מנצפךמ מנותק
                מנצפךמ מנותק
                מנצפך
                כתב ב נערך לאחרונה על ידי
                #7

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

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

                  אני בעד שבטבלה הראשית אין שום מאפיין גמיש מבחינת קיומו מהותו וכותרתו.
                  אני בעד טבלה חיצונית, והאפשרות של טקסט היא לא כזאת טפשית.
                  ראה את המאמר הזה בויקיפדיה: https://en.wikipedia.org/wiki/Entity–attribute–value_model
                  הרעיון הוא לשמור ככה: מזהה לקוח, מזהה תוכנה, ערך מופרד באיזשהוא מפריד.
                  אבל הEAV הוא לפעמים קיצוני יותר, כשיש כמה סוגי ישויות, ויש תכונות עם כמה ערכים, ואז הכל זה שדה טקסט מופרד במפריד כל שהוא או JSON/XML. אגב בוורפרס יש כמה טבלאות בודדות וכל שאר הפרטים נשמרים בטבלה אחת בשיטה של EAV. השליפה לא יקרה כי זה מאונדקס כמחרוזת ומחפשים תמיד ע"י לייק של "מתחיל ב" - זה מהיר כמו אינדקס רגיל.

                  הנה דיון על זה בsoftware-engine:
                  https://softwareengineering.stackexchange.com/q/93124/112215

                  והנה שאלתך בסטאק: https://stackoverflow.com/q/870808/1271037
                  בתשובה שהתקבלה הוא מסכם את האפשרויות עם מעלותיהם וחסרונותיהם.

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

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

                  תגובה 1 תגובה אחרונה
                  6
                  • clickoneC מנותק
                    clickoneC מנותק
                    clickone
                    כתב ב נערך לאחרונה על ידי
                    #9

                    תודה לכל המגיבים והמשקיעים.
                    אני בעז"ה אלמד את הנושא לעומק, ואשתדל לשתף בסוף בתובנות ואולי גם בקוד.

                    אין טסט כמו פרודקשן.

                    המייל שלי urivpn@gmail.com

                    תגובה 1 תגובה אחרונה
                    4
                    • clickoneC מנותק
                      clickoneC מנותק
                      clickone
                      כתב ב נערך לאחרונה על ידי
                      #10

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

                      • האם כדאי לבנות לבד או ללכת על משהו מוכן שכבר כתוב?
                        דוגמא:
                        https://www.nrecosite.com/semantic_storage_net.aspx

                      אין טסט כמו פרודקשן.

                      המייל שלי urivpn@gmail.com

                      dovidD תגובה 1 תגובה אחרונה
                      0
                      • dovidD מחובר
                        dovidD מחובר
                        dovid ניהול
                        השיב לclickone ב נערך לאחרונה על ידי
                        #11

                        @clickone אני הייתי עושה משהו קליל - טבלה נוספת עם שדות של מזהה מאפיין וערך וזהו.

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

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

                        clickoneC 2 תגובות תגובה אחרונה
                        1
                        • clickoneC מנותק
                          clickoneC מנותק
                          clickone
                          השיב לdovid ב נערך לאחרונה על ידי
                          #12

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

                          אין טסט כמו פרודקשן.

                          המייל שלי urivpn@gmail.com

                          dovidD תגובה 1 תגובה אחרונה
                          0
                          • dovidD מחובר
                            dovidD מחובר
                            dovid ניהול
                            השיב לclickone ב נערך לאחרונה על ידי dovid
                            #13

                            @clickone אמר בהתייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת:

                            ועוד טבלה של הגדרת מאפיינים

                            פה כבר עשית כמו ארכיטקט...

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

                            אני זוכר שעם ארכיטקט אכלנו קש בנידון (בשלב כל שהוא זה היה בשימוש בפקד של טלריק, הנה זכר לעניין: א, ב).

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

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

                            תגובה 1 תגובה אחרונה
                            1
                            • clickoneC מנותק
                              clickoneC מנותק
                              clickone
                              השיב לdovid ב נערך לאחרונה על ידי
                              #14

                              @dovid אמר בהתייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת:

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

                              @dovid אמר בהתייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת:

                              ועוד טבלה של הגדרת מאפיינים

                              פה כבר עשית כמו ארכיטקט...

                              טוב... התבלבלתי לגמרי
                              מה עוזר המזהה מאפיין אם אין לו טבלה שבה נמצאים המזהים הראשיים?
                              או שפיספסתי בהצעה שלך משהו 😮

                              אין טסט כמו פרודקשן.

                              המייל שלי urivpn@gmail.com

                              תגובה 1 תגובה אחרונה
                              0
                              • clickoneC מנותק
                                clickoneC מנותק
                                clickone
                                כתב ב נערך לאחרונה על ידי
                                #15

                                @dovid למה בעצם לא להשתמש בPivot?
                                דוגמא:

                                contacts.Pivot(X => X.Phones, X => X.PhoneType, X => string.Concat("(", X.AreaCode, ") ", X.PhoneNumber), true)
                                

                                https://stackoverflow.com/questions/8082057/how-to-use-pivot-table-with-entity-framework
                                http://linqlib.codeplex.com/wikipage?title=Pivot&referringTitle=Home

                                אין טסט כמו פרודקשן.

                                המייל שלי urivpn@gmail.com

                                dovidD תגובה 1 תגובה אחרונה
                                0
                                • dovidD מחובר
                                  dovidD מחובר
                                  dovid ניהול
                                  השיב לclickone ב נערך לאחרונה על ידי dovid
                                  #16

                                  @clickone ממש נפלא, לא הכרתי...

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

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

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

                                    @clickone אמר בהתייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת:

                                    @dovid למה בעצם לא להשתמש בPivot?

                                    יש PIVOT ב MSSQL?
                                    כי בMySQL עד כמה שידוע לי, אין

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

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

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

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

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

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

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

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