尋求表關係回饋,一般模式設計
我正在為一家銷售全球各種活動門票的企業設計一個數據庫。該應用程序將使用 PostgreSQL 使用 Rails 建構。
這是我到目前為止所擁有的,連結到全尺寸圖片
我最關心的是EVENT_CATEGORIES / EVENT_SUB_CATEGORIES / TEAMS_ARTISTS / COMPETITIONS之間的關係。
使用者使用該應用程序的典型路徑是
體育 (event_category) —> 足球 (event_sub_category) —> 歐洲冠軍聯賽 (competitions) —> 阿森納 (teams_artists),跳過沒有比賽的賽事的比賽,例如音樂會。
這些關係會在生產環境中成立嗎?有什麼更優化的我忽略了嗎?一般而言,任何其他提示都將受到歡迎和讚賞。
謝謝!
事件類別和子類別是事件的分類。它們是您標記事件的方式(即元屬性)。事件本身是一個物理事物/事件(獨立於你),你將這些屬性附加到它上面。競爭和競爭對手也是與事件相關的物理事物。在設計時,了解什麼是物理事物以及您的設計工件是什麼是有幫助的。
我不認為 Competition 或 Competitors 或 Performers (如果是非體育賽事)應該取決於您的分類。
** 所以我會去掉子類別和競爭之間的聯繫。**
一個事件有表演者。表演者可以是個人或團隊。一個事件將與一個或多個表演者相關聯。
像 UEFA-CL 這樣的比賽可以被視為事件的集合(*不是相反 - 就像在您的模型中 *)。因此,與事件相比,競爭是獨立的(或者更確切地說,是更高級別的實體)。事件有點像比賽在特定時間/地點的“傳遞”(或實例)。
因此,競賽 –> 有多個 (> 0) 事件 –> 有多個 (> 0) 表演者。(這是我看待比賽的方式)。所以我會在事件之上進行競爭(在對象層次結構中 - 這裡不談論繼承)
我可以談論 UEFA-CL 而無需提及其集合中的特定事件。比賽由(穩定的)隊伍組成。比賽可以跨越賽季 - 所以你甚至可能有搜尋/向下鑽取標準,例如足球。您需要設置生產,以便您也可以輕鬆地對數據進行分析。我不想把競爭深深地埋在你的等級制度中。