0

我有一个网站,其中显示了运动员名单及其统计数据。用户可以注册并创建一个由这些球员组成的球队,我可以在其中汇总和分析球队统计数据。我想让每个用户都能够从列表中“划掉”一名球员(但不会将他们从数据库中删除),并在需要时将已划掉的球员恢复到名单中。被划掉或未被划掉的球员需要保存在数据库中,这样当用户返回网站时,他们的名单就会被保存。

这些是我目前拥有的表格:

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 表中,其中我有一个用户 ID 列,然后是 30 个列(编号 1-30),我在其中存储了他被选中的球员姓名和位置单元格(以这种格式播放器名称/位置)。一个团队最多可以包含 30 名玩家。

我想我需要一个“可用表”来存储哪些玩家被哪些用户划掉了。考虑到用户可以从列表中删除多达 600 名玩家,我不确定解决此问题的最佳方法是什么。

任何建议将不胜感激,我对处理数据库完全陌生,而且我似乎碰壁了。

谢谢!

4

2 回答 2

1

您可能应该从球队表中删除球员数据,并为球员和球队数据设置一个连接表。

所以你最终得到

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 的连接是唯一的,可以用作该表的键。

于 2013-01-08T05:01:14.940 回答
0

阅读本教程。这很有帮助:

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

数据库的设计取决于给定的球员是否可以属于数据库中的多个球队。如果可以,那是一种has and belongs to many关系,您需要一个链接表,可能称为Players_Teams(始终按字母顺序列出表)。该表还可以包含crossedOff您正在讨论的列。

使用像 ActiveRecord 或 Doctrine 这样的 ORM(对象关系映射器)可以大大减少您需要编写的代码量,从而使这些关系的管理在您的代码中有些“自动化”。

于 2013-01-08T05:16:18.340 回答