טבלת תנועות בSQL
-
יצרתי מסד נתונים בSQL עבור תורמים.
כתבתי טבלה של נתוני התורמים, טבלה של נתוני התרומה, טבלה של נתוני חשבון בנק (למי שמשלם באמצעות ה"ק) וטבלה של פרטי כרטיס אשראי (כנ"ל, כמובן ללא שמירת פרטי הכרטיס אלא שמירת הטוקן).
הבעיה שלי היא שכיון שאפשר לשלם ב4 דרכים (ה"ק, אשראי, מזומן, צ'יק) אני צריך לשמור מס' מזהה של האמצעי שדרכו שולמה התרומה. וכיון שיש כמה אפשרויות, אז נוצרת לי בעיה איך אדע לאן שייך המזהה של אמצעי התשלום: האם זה ID של אשראי או של חשבון בנק?
חשבתי על 2 אפשרויות: א' לאחד את חשבונות הבנק והאשראי בטבלה אחת, אך נראה לי פחות טוב כיון שאין קשר אמיתי בין 2 הדברים.
ב' לעשות 2 עמודות בטבלה: 1. של סוג אמצעי התשלום, 2. של מזהה אמצעי התשלום. כמובן שאז אינני יכול לקשר בין הID של אמצעי התשלום לטבלה הנכונה כי יש לי 2 אפשרויות, אלא רק מאחורי הקלעים לאחר שהמשתמש יבחר בסוג אוכל להציג לו את רשימת הID המתאימה למה שבחר.
זה נראה לי יותר הגיוני, אבל האם זה לא יצור יותר בעיות אח"כ שאצטרך להפעיל שאילתות וחיפושים?
אשמח לשמוע כיצד אתם נוהגים, ואם יש לכם עצות אחרות..
דבר נוסף, היכן לשמור זאת בטבלת נתוני התרומה (כדי שאדע כשיגיע הזמן מהיכן לגבות), או בטבלת התנועות (כי אולי חודש אחד הוא ירצה לשלם בצורה שונה?) או גם וגם?פורסם במקור בפורום CODE613 ב12/07/2015 21:35 (+03:00)
-
נושא ארוך (וטעון... <!-- s:-) --><img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":-)" title="מחייך" /><!-- s:-) -->)
אין לי זמן עכשיו, אבל אתה יכול להתחיל כאן
http://code.613m.org/viewtopic.php?f=1&t=231פורסם במקור בפורום CODE613 ב12/07/2015 21:54 (+03:00)
-
את שיטה א' תוריד מהפרק - אין ספק שלא צריך לשמור נתוני אשראי ופרטי בנק באותה טבלה.
לשמור עמודה אחת של סוג אמצעי התשלום ועמודה נוספת של מזהה התשלום זוהי פרקטיקה מאוד נפוצה ונכונה - אין ספק שניכר בך הפוטנציאל. . .לגבי בעייתיות בהמשך עם שאילתות:
העיקרון הוא שאין שום מקום לפשרות כשהתוצאה היא bad design - (נתרגם לארכיטקטורה גרועה?)
תאמין לי ארכיטקטורה גרועה היא היא זו שתסבך אותך הכי הרבה, אתה תתקע בכל מיני פינות וגם בחיפושים אחרי פתרון באינטרנט תחוש בודד, כי אף אחד לא עשה את הדברים עקום כמוך, וממילא לא תמצא פתרון, תיאלץ לפתור לבד - מה שיגרום לך לסבך עוד ועוד את התוכנה עד אין קץ.אתן לך דוגמה: אתה יכול לפתור את הבעיה בעזרת פתרון פשוט - בכרטיס הלקוח לשמור בעמודה אחת את אמצעי התשלום ולתת לכל כרטיסי האשראי מזהה אי זוגי ולכל ההו"ק מזהה זוגי, ככה אתה גם יכול לדעת בחישוב פשוט איזה אמצעי תשלום זה וגם לאחד אותם לשדה אחד. נפלא, נכון?
זהו שלא. מה קורה אם מחר הוא ירצה להוסיף תשלום באמצעות paypal? תעשה כפולות של 3? אה, רגע, זה אי זוגי! אז מהיום, ועל העבר נעשה UPDATE, בעצם זה PK.. וככה נראה הפתח לכל הצרות. . . למעשה, גם אז תוכל לפתור את הבעיה אבל ברמת סיבוכיות שתדרוש ממך עבודה רבה מאוד.מידה טובה מרובה:
אם תלך בדרך הישר ולא תחפש קיצורי דרך של ארכיטקטורה גרועה, אולי תתקל פה ושם באתגרים טכנולוגיים. אך תמצא שפע של עזרה ברשת ודוגמאות של אנשים שכבר עשו זאת לפניך, וההתמודדות תהיה בטווח הסביר, חוץ מזה שטיפול באגים יהיה פשוט יותר ושינויים בתוכנה יהיו קלים יותר.פורסם במקור בפורום CODE613 ב12/07/2015 22:03 (+03:00)