这是一个基于国家和部门的基于运动队的数据库的正确数据库结构吗?
我期待建立一个体育数据库,其中用户从列表中选择一个国家15个不同的国家,然后在该国内提出不同的部门。然后用户选择一个部门,并在该部门内选择一个小组列表。这是一个基于国家和部门的基于运动队的数据库的正确数据库结构吗?
我建议采取的一种方法是为国家和团队制定单独的表格。
表 - 国家
国家|小组(int数组)
表 - 团队
ID(INT)|团队名称| Division
'Teams(int array)将与队伍表中球队名称的ID匹配。
我不是100%确定这是正确的做法。
什么其他解决方案是明智的?
回答:
您应该创建三个表格。喜欢的东西
create table countries( id int unsigned auto_increment primary key,
name varachar(100) not null,
unique key (name)
);
create table divisions(
id int unsigned auto_increment primary key,
country_id int unsigned not null,
name varchar(100) not null,
unique key uk_name (name),
foreign key fk_countries (country_id)
references countries(id)
on update restrict
on delete cascade
);
create table teams(
id int unsigned auto_increment primary key,
division_id int unsigned not null,
name varchar(100) not null,
unique key uk_name (name),
foreign key fk_divisions (division_id)
references divisions(id)
on update restrict
on delete cascade
);
你的查询会..
显示所有国家:
select id, name from countries;
用户选择后,你知道那个国家的ID的国家,你可以展示所有部门该国家:
select id, name from divisions where county_id = ?;
现在用户选择一个部门,你得到它的ID - 所以你可以n显示该部门的所有团队:
select id, name from teams where division_id = ?;
回答:
您不需要将团队存储在国家/地区表中。只需要有一个国家名称的国家表。在小组表中,为使用国家表索引的国家设置一列。现在您可以搜索特定国家/地区的所有团队。例如;
select teamName, otherTeamData from teamTable where countryIndex = selectedCountryIndex and divisionIndex = selectedDivisionIndex;
您还需要一个分区表,这个分区表也可能有countryIndex。然后你提出一个专门针对任何国家的部门清单。
以上是 这是一个基于国家和部门的基于运动队的数据库的正确数据库结构吗? 的全部内容, 来源链接: utcz.com/qa/262848.html