
17-01-2008, 14:19
|
|
|
|
חבר מתאריך: 13.11.04
הודעות: 64
|
|
|
עזרה בתכנון של DB פשוט.
שלום, אני חדש בתחום ה DB, ורציתי להתייעץ בקשר לבעייה שנתקלתי בה.
אני בונה כרגע DB באמצעות MySql.
אני אציג את הבעיה, ואז אשאל לגבי 2 אפשרויות פתרון:
יש לי עולם שבו יש סוגים שונים של אובייקטים (כמו חנות). למשל: מכונית, אקווריום, ספר.
לכל אובייטק יש מספר תכונות שמרכיבות אותו. למשל לספר יש מספר עמודים, עובי כריכה ועוד...
מספר התכונות הוא משתנה ודינאמי, בממוצע בין 10-20 תכונות.
לכל אובייקט כזה יש בין עשרות לאלפי מופעים: למשל כל הספרים הם מופעים של האובייקט ספר.
העולם שלי הוא דינאמי וכל הזמן נוספים לו אובייקטים חדשים (אלפים) ומופעים נוספים של אובייקטים.
השאלה שלי היא כיצד לייצג את העולם הזה באמצעות ה DB:
1. אפשרות ראשונה.
ליצור עבור כל אובייקט טבלה משלו, ובפנים כל המופעים שלו.
כל פעם שנוצר אובייקט חדש, אני אצור עבורו טבלה מתאימה שכוללת מספר עמודות כמספר התוכונת.
יהיה לי טבלת מפתח שמכילה את שם האובייקט ואת הטבלה שלו.
בסופו של דבר תהיה לי סכמה שמכילה אלפי טבלאות של אובייקטים.
2. אפשרות שניה.
ליצור 4 טבלאות מרכזיות במקום אלפי טבלאות.
טבלה ראשונה היא טבלה של האובייקטים. מכילה את כל סוגי האובייקטים. למשל ספר, מכונית...
טבלה שנייה שתשמש למופעי אובייקטים. למשל עבור מופעים של ספרים. שורה תכיל ספר מסויים, או מכונית מסויימת. (שורה מייצגת רק את המופע ושמו, ללא תכונות.למשל ספר בשם "בסיסי נתונים" הוא מופע)
טבלה שלישית של metadata של כל האובייקטים. כלומר שורה בטבלה תראה כך: סוג אובייקט, מספר תכונה, שם תכונה. למשל: ספר, תכונה מס 1, אורך בעמודים.
טבלה רביעית תכיל את כל המידע. כלומר שורה בטבלה תראה כך: מספר מופע של אובייקט, מספר תכונה, הערך של התכונה. למשל: ספר 1 ("בסיסי נתונים"), תכונה 1 (מספר עמודים), 433 עמודים.
בהנחה ש:
1. כל השאילתות מתמקדות באובייקטים מאותו סוג, למשל בכל סוגי הספרים, או כל סוגי המכוניות.
אין בכלל שאילתות על אובייקטים מסוגים שונה. למשל מכוניות וספרים.
2. כל הזמן נוספים מופעים חדשים.
3. כל הזמן נוספים סוגי אובייקטים חדשים.
4. רוב השאילתות הן של מיון וחיפוש אובייקטים לפי תכונות.
באיזו צורה הייתם בוחרים?
לי נראה שהצורה הראשונה טובה יותר מכל הבחינות, מבחינת פשטות, נוחות, הכנסת מידע וחיפוש.
השאלה שלי היא מה עדיף מבחינת יעילות ה DB.
הרבה טבלאות עם מעט מידע בכל טבלה?
או מעט טבלאות עם הרבה מידע בכל טבלה?
תודה מראש,
מעוז
|