![]() |
קטגוריה כפולה -php sql
אני אני עושה קטגוריה כפולה,
נניח יש את הסרט "ללכת על הכל", הוא גם סרט קומדיה וגם סרט מתח, אני רוצה שאני אוכל למצוא אותו בשתי הקטגוריות, איך אני עושה את זה ב-sql? (לצורך העניין הסרט יכול להימצא ביותר מ-2 קטגוריות) תודה. |
אני מצליח לחשוב על 3 שיטות שונות
1. אם ידועות לך כל הקטגוריות אז פשוט תעשה עמודה לכל קטגוריה ותכניס TRUE או FALSE אם הסרט שיך לאותה קטגוריה יתרונות: חיפוש מהיר, אפשר לעשות אינדקסים לקטגוריות, חיסכון בשורות חסרונות: כדי להוסיף קטגוריה מוסיפים עמודה לכל הטבלה של הסרטים, אם יש הרבה קטגוריות יהיו הרבה עמודות וזה לא אלגנטי בכלל וכו' 2. יצירת טבלה נוספת של קטגוריות ובטבלת הסרטים להכניס מחרוזת של שיוך לקטגוריה למשל 1,3,5,6 יתרונות: חיסכון בשורות ועמודות בטבלה, אפשרות עריכה וניהול של קטגוריות חסרון: שאילתות מסובכות צריך לנתח את המחרוזת בכדי להבין לאן שיך כל סרט, זמן ריצה של שאילתא איטי 3. עבור כל קטגוריה שורה של סרט למשל אבטר מתח, שורה הבאה אבטר פעולה וכו' יתרונות: שאילתות מהירות, פשטות השאילתא, אלגנטי יחסית חסרונות: ניפוח בסיס הנתונים, פרטים חוזרים על עצמם אין נירמול נכון של בסיס הנתונים. תבחר מה שמתאים לך לפי יתרונות מול חסרונות. |
כרגע המערכת שלי עובדת על משהו בסנון השיטה השנייה שלך,לכל קטגוריה יש קוד מזהה , Cc - קומדיה, Ct.
ובמשתנה mCategory הם מופרדים במקפים "Ct-Cc". לדוגמא כדי לשלוף את כל סרטי המתח אני עושה: PHP קוד:
|
אני גם משתמש בשיטה הזו, נסה לשלב את הבדיקה של הקטגוריה דרך השאילתא זה הכי מהיר ויעיל
תשתמש בLIKE ובCASE |
אתה יכול לעשות בחירה מרובה, או כמשכניסים את הסרט, ואז יהיה נגיד Ct,Cc במסד
והוא יהיה שייך ל-2 הקטגוריות. או בחירה מרובה בשאילתא, PHP קוד:
|
רעיון דומה, אך עדיף:
אם הקטגוריות שלך מזוהות ע"י מס' ייחודי (ID), תוסיף לכל סרט עמודה של cat ושמה תכניס ערך בסגנון: 3,16,7. שזה אומר שהסרט שייך לקט' מס' 3, לקט' מס' 16 ולקט' מס' 7. ככה בד"כ עושים את זה. |
טבלאות מקושרות זה הפתרון הכי טוב..
נגיד ויש לך ככה: - טבלה של ז'אנרים (מתח,קומדיה,אקשן...) - טבלה של סרטים אתה יוצר טבלה נוספת וצריך להיות בה 3 שדות ID יחודי לכל רשומה שדה שיכיל את ה ID של הז'אנר שדה שיכיל את ה ID של הסרט אם לדוגמא יש לסרט כלשהו 3 ז'אנרים מתח/קומדיה/רומנטיקה אתה מכניס לטבלה הזאת 3 רשומות שבכל רשומה כזאת אתה מכניס את ה ID של הסרט ואת ה ID של הז'אנר מקווה שהבנת את הכוונה.. |
Deagly, קצת מוזר לפנות לבנאדם בשם הזה אבל בסדר :)
זה פיתרון, אבל הכי טוב אני לא בטוח. הוא נשמע לי נורא לא יעיל. הוא מוסיף עומס על המסד נתונים פעמיים, גם בכמות הנתונים (התווספה לנו טבלה שלמה), וגם בקריאה (כאשר צריך לקרוא ל2-3 רשומות יותר כל פעם) |
אתה יכול לעשות מה ש- Deagly אמר, אבל רק במקום 3 רשומות, לעשות ב ID של הז'אנר מופרד בפסיק כל ז'אנר,
או מה ש xPerfection אמר שזאת גם שיטה טובה, והכי יעילה מכל השיטות שהוצעו כאן. |
קראתי קצת מאמרים באנגלית,
מסתבר שיש משתנה מסוג ENUM שנוצר לכאלה מטרות, קראתי עליו, אבל לא ממש הבנתי איך עובדים איתו. מישהו התנסה איתו? |
כל הזמנים הם GMT +2. הזמן כעת הוא 12:40. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ