簡體   English   中英

多表數據庫設計

[英]Multiple table database design

我有一個網站,其中顯示體育運動員及其統計信息的列表。 用戶可以注冊並創建一個由這些球員組成的團隊,在這里我對團隊統計信息進行匯總和分析。 我想賦予每個用戶從列表中“淘汰”一名球員的能力(但尚未將其從數據庫中刪除),並在需要時恢復已經被淘汰的一名球員。 被淘汰或未被淘汰的球員需要保存在數據庫中,這樣當用戶返回站點時,他們的名單就被保存了。

這些是我目前擁有的表:

Players Table (COLS: Name, Team, Position, Stats, etc.)
Users Table (COLS: User ID, Name, Email, etc.)
Teams Table (COlS: User ID, 1, 2, 3, etc.)

我很確定,有一種更好的方法可以在Teams Table中存儲信息,在該表中我有一列用戶ID,然后在30列(編號1-30)中存儲了玩家的名字和他在其中所選擇的位置單元格(采用“播放器名稱/位置”格式)。 一個團隊最多可包含30名球員。

我想我需要一個“可用表”來存儲哪些玩家被哪些用戶淘汰。 考慮到用戶可以從列表中淘汰多達600名玩家,我不確定執行此操作的最佳方法是什么。

任何建議都將不勝感激,我是數據庫處理的新手,而且我似乎碰壁了。

謝謝!

您可能應該從團隊表中刪除玩家數據,並為玩家和團隊數據建立一個聯接表。

所以你最終

Teams Table (Cols: ID, User ID, Team Name)
Team_Players Table (Cols: Team_ID, Player_ID, Position, Active)

然后,您可以通過在Team_Players上運行查詢來獲取哪些球員屬於哪個團隊,並檢查他們是否處於活動狀態。

我沒有添加ID字段,因為Team_ID和Player_ID的聯接是唯一的,並且可以用作此表的鍵。

閱讀本教程 這非常有幫助:

http://www.tomjewett.com/dbdesign/dbdesign.php?page=association.php

數據庫的設計取決於給定的玩家是否可以屬於數據庫中的多個團隊。 如果可以,那是一個has and belongs to many關系,您將需要一個鏈接表,該表可能稱為Players_Teams (始終以alpha順序列出表)。 該表還可以包含您正在談論的crossedOff列。

使用ActiveRecord或Doctrine之類的ORM(對象關系映射器)可以大大減少您需要編寫的代碼量,以使這些關系的管理在代碼中有些“自動”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM