התייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת
-
אני בעד שבטבלה הראשית אין שום מאפיין גמיש מבחינת קיומו מהותו וכותרתו.
אני בעד טבלה חיצונית, והאפשרות של טקסט היא לא כזאת טפשית.
ראה את המאמר הזה בויקיפדיה: 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
בתשובה שהתקבלה הוא מסכם את האפשרויות עם מעלותיהם וחסרונותיהם. -
אני מתחיל לאט לאט לשים כאן לינקים ודברים שיוצאים לי תוך כדי חקירת הנושא
- האם כדאי לבנות לבד או ללכת על משהו מוכן שכבר כתוב?
דוגמא:
https://www.nrecosite.com/semantic_storage_net.aspx
- האם כדאי לבנות לבד או ללכת על משהו מוכן שכבר כתוב?
-
@dovid זה מה שעשיתי
ועוד טבלה של הגדרת מאפיינים
להבנתי ככה הכי נכון לממש EAV בDB יחסי. (ז"א, לא אני המצאתי את הגלגל באיך לממש )
זה עובד מצויין ברמת המסך עריכת האיש קשר
כעת אני מתמודד עם הבעיות להביא את זה לטבלה של כל השמות (איטיות בעיקר)
מקווה בימים הקרובים להעלות לכאן חלק מהקוד -
@clickone אמר בהתייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת:
ועוד טבלה של הגדרת מאפיינים
פה כבר עשית כמו ארכיטקט...
כעת אני מתמודד עם הבעיות להביא את זה לטבלה של כל השמות (איטיות בעיקר)
אני זוכר שעם ארכיטקט אכלנו קש בנידון (בשלב כל שהוא זה היה בשימוש בפקד של טלריק, הנה זכר לעניין: א, ב).
-
@dovid אמר בהתייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת:
טבלה נוספת עם שדות של מזהה מאפיין וערך וזהו.
@dovid אמר בהתייעצות: טבלת MetaData מול הרחבת הטבלה הקיימת:
ועוד טבלה של הגדרת מאפיינים
פה כבר עשית כמו ארכיטקט...
טוב... התבלבלתי לגמרי
מה עוזר המזהה מאפיין אם אין לו טבלה שבה נמצאים המזהים הראשיים?
או שפיספסתי בהצעה שלך משהו -
@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