Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数据库设计的一列中有多个值_Sql_Database Design - Fatal编程技术网

Sql 数据库设计的一列中有多个值

Sql 数据库设计的一列中有多个值,sql,database-design,Sql,Database Design,我需要设计一个数据库。我有两个必须在SQL模式中实现的实体。 第一个是足球运动员 足球运动员有: 唯一的ID 名字 姓 他以前效力过的球队及其合同日期 第二个实体是团队。 团队有: 唯一的名字 创建日期 主场 如何在一列中存储多个团队及其合同日期。我应该创建一个新表吗?如何链接?任何建议…你不应该做这种设计!这是一个糟糕的DB设计,在S 串联字符串很难处理,特别是对于初学者 我的建议是-或者制作另一个包含球员id、球队id、开始日期、结束日期等内容的表格 , 或者只将它们存储在Footb

我需要设计一个数据库。我有两个必须在SQL模式中实现的实体。 第一个是足球运动员

足球运动员有:

  • 唯一的ID
  • 名字
  • 他以前效力过的球队及其合同日期
第二个实体是团队。 团队有:

  • 唯一的名字
  • 创建日期
  • 主场

如何在一列中存储多个团队及其合同日期。我应该创建一个新表吗?如何链接?任何建议…

你不应该做这种设计!这是一个糟糕的DB设计,在S

串联字符串很难处理,特别是对于初学者

我的建议是-或者制作另一个包含球员id、球队id、开始日期、结束日期等内容的表格 ,
或者只将它们存储在Football players表中,但通过制作
PK
-
Player\u id、team\u id、Start\u Date
表之间的关系,为每个旧球队创建一个记录。因此,您必须创建具有2列的桌上足球队:
football\u id和teams\u id


因此,您将团队id及其每个记录的合同放在表中。

第一条建议似乎很好。关于第二个问题,player_id是唯一的主键,所以我不确定同一个player id可以有多个值,我知道,我的意思是将PK更改为
player_id,Old_Team
@HakiTerrorI完全同意这个答案。您需要有第三个中间表,其中包含球员表和球队表(以及合同日期字段)的外键。为什么
Old_Team
而不是
Team_Id
?还有,为什么
Start\u d
可以
Start\u Date
?最后一件事-将开始日期添加为复合主键的一部分-玩家可以来回切换球队,这样一个人就可以在同一支球队中玩两个不同的时间段。啊,这是“为什么我的软件中有bug”问题的正确答案:-)一名球员可以在同一时间为多支球队比赛吗?