mysql - 数据库新手 - 主键、外键、根本没有键?

标签 mysql foreign-keys primary-key

我是一名大学计算机科学专业二年级学生。我正在使用 php/mySQL 制作一个在线应用程序。这是我第一次使用 PHP 和 mySQL。不管怎样,我正在制作一个跟踪棒球比赛的应用程序。用户创建一个玩家团队并开始与另一个团队进行游戏,用户输入结果,同时应用程序对游戏进行评分并保留玩家统计数据。我正在设计数据库,希望有人能为我澄清:

主键- 我很确定我明白这是什么。基本上它是每一行的唯一标识符,用于区分每一行。

外键 - 现在我有一个“Players”表,还有一个“PlayerStats”表。如果我理解正确(我可能没有理解),“Players”表有一列“playerStatsId”,它是“PlayerStats”表的主键。这是可行的,因为每个玩家只有一个统计表。

没有 key ???- 好的,这是我的例子。我的应用程序的每个用户都应该能够向数据库添加任意数量的团队。他们只能编辑他们“拥有”的球队的比赛。我想我可以通过一个包含两列的表来实现这一点:“用户名”和“teamId”。然后我可以搜索表格并选出属于某个用户的团队。我觉得这不是答案,因为它看起来效率不高。有更好的办法吗?

我很感激任何帮助!谢谢!!

最佳答案

外键

PlayerStats 表中每个玩家只有 1 条记录吗?如果是这样,那么为什么不将统计数据放入“玩家”表中呢?

如果每个玩家有多个统计数据,通常我们会将统计数据分开到不同的表中。

示例:

Players
PlayerID  Name
001       George

PlayerStats
PlayerID  StatType        Value
001       BattingAverage  0.300
001       RunsPerGame     2

在这种情况下,PlayerID 将是 PlayerStats 表上的外键。这种表有时被称为业务应用程序的“详细信息”表。

您的无键示例很好并且很常见。我不记得它叫什么了,类似于“关系表”。

关于mysql - 数据库新手 - 主键、外键、根本没有键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13169103/

相关文章:

php - 在 MySql 到 MySqli 转换后处理 MySQLi 查询的结果

mysql - 如何将表与许多其他表之一关联起来?

MySQL使用外键创建表,给出errno : 150

sql - 存储和重用 INSERT ... RETURNING 返回的值

indexing - 使用带有 GUID 主键的 Entity Framework Core 5.0.4 创建非聚集索引

Mysql 查询,或条件不工作

php - 删除带有索引的大型 MySQL 表的性能

php - 如何在 laravel 5.4 中获取最后插入的 id

django - Django : exactly 1 of 2 foreign keys has to be null 中的约束

c# - 实体类型需要定义主键,且 key 属性错误