database - 一对多对多

标签 database database-design filemaker

我有一个带有这样表格的足球联赛项目......

----------------------------------------

联赛表
联赛关键
联赛名称
赛季


团队表
Team KEY
联赛KEY
Team Name


玩家表
球员关键
球队关键
球员姓名

----------------------------------------

每支球队可以在一个联赛中。每个球员都可以分配到每个联赛中的一支球队。 (这是通过 Teams Key(s) 复合索引字段完成的。)

因此,一名球员可以在 3 个不同联赛的 3 支球队效力。这一切都很好。

我的设计是让每位球员根据您正在查看的球队获得不同的 Jersey 号码。

如何设置这样的一对多对多引用?

最佳答案

您的标题有些误导,因为您拥有的是 TeamsPlayers< 之间的多对多 关系: 一个队有很多人,一个人可以在很多队。

的确,FileMaker 允许您使用多键 字段实现多对多 关系。然而,这是一个有几个限制的 hack - 其中无法为团队对球员的个人加入分配任何属性,例如所需的 Jersey 号码。

解决多对多关系的正确方法是通过连接表,如下所示:

Teams --< TeamPlayers >-- Players

TeamPlayers 表将(至少)包含以下字段:

  • 团队 ID(链接到团队)
  • PlayerID(链接到玩家)
  • Jersey 号码

Players 表中将没有Team KEY(s)字段。

关于database - 一对多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42072447/

相关文章:

php - 警告 : mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql. socks )中

iphone - FMDB数据库WithPath : not writing to disk

odbc - Filemaker 重复字段和 ODBC

ruby-on-rails - 如何在不更改代码的情况下将单站点应用程序变成可维护的多站点应用程序?

python - 在 Python 中通过 ODBC 访问 Filemaker 18 文件中的数据

php - FileMaker:与 Magento 集成

mysql - MySQL可以存储多少数据?

mysql - SQL - 用条件替换另一个列值中的列值

mysql - 想知道如何构建这个用户和服务器 ID 数据库

MySQL - 传输数据