database-design - 数据库结构 - 来自多个表的项目

标签 database-design database-schema

我正在创建一个用于存储摔跤事件的数据库,但在如何构建数据库方面遇到了困难。感谢任何人的帮助。

我有下表:

tblPeople 将包含我所有的摔跤手。

tblPeople
  - personId
  - personName 
    #eg: "211", "Dean Ambrose"

tblTeams 将包含特定标签团队

tblTeams
- teamId
- teamName
  #eg: "13", "Shield"

tblPeopleInTeams 将人员与团队联系起来

tblPeopleInTeams
- peopleInTeamsId
- teamId
- peopleId
  #eg: "1", "13", "211"

tblMatches 将包含比赛详细信息并需要反射(reflect)所涉及的人员或团队

我不确定如何构建 tblMatches 以便它可以引用一个人或一个团队。一个例子是,一场比赛可以有“Dean Ambrose”或“Shield”作为竞争对手。

我可以做:

tblMatches
- matchId
- peopleId
- teamId
  #eg: "412", "211", NULL (for Dean Ambrose)
  #eg: "412", NULL, "13" (for Shield)

但要使用此功能,我只需填充其中一个字段,并在应用程序中使用条件逻辑来确定条目类型。我想有更好的方法来做到这一点,但我想不出如何做。请问有什么想法吗?

谢谢乔丹。

最佳答案

您可以使用generalization pattern in database design .
拥有一个名为 wreSTLer 的个人和团队的基表,具有 1:0 关系。
像这样的:

为两个竞争对手之间设计的比赛。 enter image description here

对于多个竞争对手:
enter image description here

关于database-design - 数据库结构 - 来自多个表的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20674722/

相关文章:

sql - 从 UML 模型生成 SQL?

产品聚合器的数据库设计

database-schema - 我的数据库设计是否违反了任何 NF 规则?

sql - 按给定字段对多个 SQL 结果进行分组

javascript - 在剑道网格中保存空字段

mysql - 更好的方式存储 friend 和检索特定用户的 friend

sql - 查找表 - 我应该使用 id 列还是只使用值?

android - 如何在我们的数据库中存储设备 token 以用于推送通知?

sql-server - 复合增量列

sql - 我如何找出在 sqlite 中删除表的正确顺序?