足球比赛的数据库结构

时间:2013-12-26 02:57:03

标签: database-design

我正在为足球赔率设计一个数据库。

我有桌面赔率:

ID HomeID AwayID 赔率

一个桌面商店所有足球队名称呼叫团队:

ID 名称

我想要一个显示的查询:

ID HomeName AwayName 赔率

有没有办法像这样进行查询? 或者我需要将团队表拆分为2个表,如:HomeTeam,AwayTeam?

1 个答案:

答案 0 :(得分:0)

一个名为team的表将会这样做。 home和away ID是引用团队表中主键ID的外键。

您提出的设计未正常化。你不应该重复数据,如果你有单独的主队和客场球队表,你就不得重复数据。

create table team (
    id int not null,
    name varchar(20) not null,
    primary key(id)
);

create table odds (
    home_id int not null,
    away_id int not null,
    odds varchar(20) not null,
    primary key(home_id, away_id),
    foreign key(home_id) references team(id),
    foreign key(away_id) references team(id)
);

select h.name, a.name, o.odds
from odds as o
join team as h
join team as a
on o.away_id = a.id
on o.home_id = h.id
where h.name = 'home team name' 
and a.name = 'away team name'