我试过找这个,但我真的不知道我在找什么。
基本上,我希望将匹配数据存储在数据库中,但是当我得到一个新的团队时,我需要将团队名称添加到行和列中。我还需要存储的不仅仅是分数,我可以使用数组来分离数据,但是在每个点上至少有两个字段是很方便的,这样我就可以搜索回家和离开的腿数据了。
Dan | Bob | Joe | Tim
Dan X | 3-1 | 0-1 | 2-1
Bob 4-1 | X | 1-0 | 0-0
Joe 1-2 | 3-3 | X | 2-1
Tim 0-1 | 0-0 | 2-1 | X有没有一种方法可以用MySQL来实现,这样我就可以在一段时间内添加无限数量的团队了吗?这种类型的数据库格式有名称吗?
发布于 2014-01-14 23:52:06
这个名字是“多对多的关系”。
它是通过一个单独的(所谓的“连接”或“链接”)表来建模的,该表引用关系的两个端点(在本例中是相同的表)。
例如:
CREATE TABLE TEAM (
TEAM_ID INT PRIMARY KEY
-- Other fields...
);
CREATE TABLE SCORE (
TEAM1_ID INT,
TEAM2_ID INT,
-- Other field(s) that descibe the score...
PRIMARY KEY (TEAM1_ID, TEAM2_ID),
FOREIGN KEY (TEAM1_ID) REFERENCES TEAM (TEAM_ID),
FOREIGN KEY (TEAM2_ID) REFERENCES TEAM (TEAM_ID)
);发布于 2014-01-14 23:45:44
你需要两张桌子:
假设你的桌子是这样的:
create table teams (
teamId int unsigned not null primary key,
teamName varchar(50)
);
create table matchData (
team1id int unsigned not null,
team2id int unsigned not null,
matchData varchar(50) -- just an example
);在适当的表中插入团队(不要插入重复项),然后插入匹配数据(当然,您需要确保team1id != team2id用于matchData的每一条记录)。
至于您想要显示数据的方式,则由您来设计前端接口.MySQL不提供内置工具来创建“枢轴表”,但是使用另一种语言(Java、PHP等)很容易显示矩阵。
发布于 2014-01-14 23:46:01
以一种简单的方式:您的表必须如下所示:
Player1 | Player 2 | scorePlayer1 | scorePlayer2
Dan Joe 0 1以此类推,但您仍然可以优化表
https://stackoverflow.com/questions/21126363
复制相似问题