אחזור מידע לפי 2 קרטריונים - כיצד לתכנן נכון
יש טבלה בשם Persons ו SP אחד בשם GetPersonDetails שמקבל PersonId ומחזיר את המידע אודות ה Person.
אני רוצה לבנות פונקציית BL נוספת שתאפשר לאחזר מידע אודות ה Person לפי Email במקום PersonId.
אני מתלבט בין מספר אפשרויות:
1. להשתמש באותו SP, לאפשר לו להציג מידע לפי מספר או לפי EMAIL (כמובן שאעביר NULL במקום הפרמטר החסר).
הייתרון - קוד במקום מרכזי ללא שכפול.
חיסרון - ביצעוים (Statistics וכו' ) ברמת ה SQL וקוד מסורבל יותר.
2. ליצור שירות ביניים (SP ו BL FUNCTION) נוספים שיאפשרו לקבל את ה personId לפי Email ואז להשתמש ב personId שקיבלתי ולהעביר לפונקציה המקורית.
ייתרון - קוד מרכזי (ללא שכפול לוגיקה), מסודר וברור יותר.
חיסרון - 2 גישות ל DB (אחת כדי לקסל את ה Person Id והשנייה כדי להביא את ה Person Details).
3. לשכפל את ה SP וליצור שירות (SP ו- BL) חדש למטרה זו.
חיסרון - שכפל קוד.
ייתרון - ביצועים.
מה דעתכם? איך אתם בד"כ עושים זאת ולמה?
כמובן ש Dynamic SQL לא בא בחשבון.
יש טבלה בשם Persons ו SP אחד בשם GetPersonDetails שמקבל PersonId ומחזיר את המידע אודות ה Person.
אני רוצה לבנות פונקציית BL נוספת שתאפשר לאחזר מידע אודות ה Person לפי Email במקום PersonId.
אני מתלבט בין מספר אפשרויות:
1. להשתמש באותו SP, לאפשר לו להציג מידע לפי מספר או לפי EMAIL (כמובן שאעביר NULL במקום הפרמטר החסר).
הייתרון - קוד במקום מרכזי ללא שכפול.
חיסרון - ביצעוים (Statistics וכו' ) ברמת ה SQL וקוד מסורבל יותר.
2. ליצור שירות ביניים (SP ו BL FUNCTION) נוספים שיאפשרו לקבל את ה personId לפי Email ואז להשתמש ב personId שקיבלתי ולהעביר לפונקציה המקורית.
ייתרון - קוד מרכזי (ללא שכפול לוגיקה), מסודר וברור יותר.
חיסרון - 2 גישות ל DB (אחת כדי לקסל את ה Person Id והשנייה כדי להביא את ה Person Details).
3. לשכפל את ה SP וליצור שירות (SP ו- BL) חדש למטרה זו.
חיסרון - שכפל קוד.
ייתרון - ביצועים.
מה דעתכם? איך אתם בד"כ עושים זאת ולמה?
כמובן ש Dynamic SQL לא בא בחשבון.