SQL | ערכים מרובים בעמודה
-
@dovid הבנתי, במקרה שלי אני חושב שעדיף האופציה הראשונה של טבלאות נפרדות, כי זה לא כ"כ דינמי, וגם לפי החישוב החוזר שעשיתי זה לא כ"כ הרבה טבלאות.
מה לגבי זה:
@www אמר בSQL | ערכים מרובים בעמודה:
מה קורה לגבי לחייב עדכון יום עבודה 1 לפחות? (אילו זה היה בלי טבלה נוספת, אז פשוט הייתי עושה NOT NULL). אני מנחש שתגיד לי להגדיר אילוץ, אין משהו יותר פשוט?
יש לך רעיון?
-
@WWW אני בפרקטיקה עושה מאוד מעט אימותים ובדיקות תקפות בצד המסד.
גם בגלל שאני הרבה יותר מתכנת מאשר DBA, גם בגלל שאני בעצמי המתכנת ולא מישהו זר, וגם בגלל שאני בד"כ צוות של איש אחד, וגם בגלל שלרוב הדברים זה לדעתי נכון יותר.
ראה גם:
https://www.red-gate.com/simple-talk/databases/sql-server/learn/where-in-the-application-should-data-validation-be-done/
https://stackoverflow.com/q/464042/1271037
https://stackoverflow.com/q/26851291/1271037 -
@www אמר בSQL | ערכים מרובים בעמודה:
@www אמר בSQL | ערכים מרובים בעמודה:
מה קורה לגבי לחייב עדכון יום עבודה 1 לפחות? (אילו זה היה בלי טבלה נוספת, אז פשוט הייתי עושה NOT NULL). אני מנחש שתגיד לי להגדיר אילוץ, אין משהו יותר פשוט?
יש לך רעיון?בדיוק כתבתי לך על זה...
סתם ככה, אני חושב שזה מופרז לקבוע שכל עובד חייב להיות לו ימים. אין רגע שבו עובד הוא בסטטוס חסר ימים? עובד חדש? עובד מפוטר? זה נראה לי דרישה שרירותית מידי בשביל צד המסד בכל מקרה, אלא"כ אני מפספס קצת מהמציאות. אבל גם אם כן תמיד אפשר לגלגל אחריות לאפליקציה... -
@dovid אמר בSQL | ערכים מרובים בעמודה:
בדיוק כתבתי לך על זה...
חשבתי שעל זה ענית...
סתם ככה, אני חושב שזה מופרז לקבוע שכל עובד חייב להיות לו ימים. אין רגע שבו עובד הוא בסטטוס חסר ימים? עובד חדש? עובד מפוטר? זה נראה לי דרישה שרירותית מידי בשביל צד המסד בכל מקרה, אלא"כ אני מפספס קצת מהמציאות. אבל גם אם כן תמיד אפשר לגלגל אחריות לאפליקציה...
אתה צודק ולא צודק, כי אני חושב לעשות עוד עמודה/טבלת תאריכים, בשביל לקבוע אם הוא פעיל.
אבל במקרה שלי חייב להיות לו הגדרה ראשית באלו ימים הוא עובד.
וכן בשפות, אם אין לו שום שפה, הוא לא רלוונטי למערכת...@dovid אמר בSQL | ערכים מרובים בעמודה:
@WWW אני בפרקטיקה עושה מאוד מעט אימותים ובדיקות תקפות בצד המסד.
גם בגלל שאני הרבה יותר מתכנת מאשר DBA, גם בגלל שאני בעצמי המתכנת ולא מישהו זר, וגם בגלל שאני בד"כ צוות של איש אחד, וגם בגלל שלרוב הדברים זה לדעתי נכון יותר.
ראה גם:
https://www.red-gate.com/simple-talk/databases/sql-server/learn/where-in-the-application-should-data-validation-be-done/
https://stackoverflow.com/q/464042/1271037
https://stackoverflow.com/q/26851291/1271037מהקישור האחרון אני מבין שכו"ע מודי שאילוץ כמו
NOT NULL
, זה הכרחי במסד.
ופה אני מפספס את זה בגלל החלוקה לטבלאות, זה מה שמדגדג לי, אם אין ברירה אז אין ברירה... -
@www אמר בSQL | ערכים מרובים בעמודה:
אתה צודק ולא צודק, כי אני חושב לעשות עוד עמודה/טבלת תאריכים, בשביל לקבוע אם הוא פעיל.
אבל במקרה שלי חייב להיות לו הגדרה ראשית באלו ימים הוא עובד.
וכן בשפות, אם אין לו שום שפה, הוא לא רלוונטי למערכת...מנסיוני, מאוד קשה לי להאמין שאתה צודק. אם אתה עושה אילוצים בסגנון זה במסד (למשל NOT NULL על תאריך לידה), אני די בטוח שתמצא את עצמך מתעצבן בהמשך על עצמך... המסד זה לא מקום שקובע את חוקי האפיון של המערכת, אלא סה"כ המקום שאוכף את הגיונותם ושלמותם של הנתונים.
לומר שעובד שחסר לו נתון של תאריך לידה זה חוסר שלמות בנתונים נשמע לי יותר החלטה דיקטטורית מאשר תכנון מושכל לטווח ארוך.
אני בפועל מסמן מעט מאוד שדות כnot null. -
@www
כעת קלטתי את הבעיה, בעת JOIN לולי הGROUPING יש לכל שורת עובד את כל השורות של השפה ואת כל השורות של הימים, וGROUP_CONCAT מאחד אותם.
אני רואה פה שיש לזה מילת מפתח DISTINCT.
כפי שאתה רואה יש שמה גם אפשרות מיון ובחירת תו מפריד, זה ממש מלהיב, לא הכרתי את התכונה הזו והיא נראית לי לא קיימת בSQL SERVER עריכה: יש STRING_AGG החל מ2017. -