mysql - 在这种情况下,非规范化表是可接受的选择吗?

标签 mysql database database-design database-schema

我想了解您对采用哪种表结构的意见。

假设这是一个存储 nba 球员信息的表。 所以你会有id、name、team_id等。

但是为了存储球员的比赛位置(控球后卫、大前锋、中锋等),我应该创建一个单独的 Player_Position 表,将 Player_ID 连接到 Position?

玩家表:

ID      Name       Team_ID
-------------------------
1    LeBron James    10
2    CJ McCollum     5

Player_Position 表:

Player_ID  Position
-------------------
  1          PG
  1          SF
  1          PF
  2          PG
  2          SG

另一个选项是将PG、SG、SF、PF、C列作为Players表中的列,这样如果玩家玩PG code> 和 SG,这些字段将为 1,其他字段为 0。

玩家表:

ID     Name          Team_ID   PG  SG  SF  PF  C
-------------------------------------------------
1   LeBron James      10       1   0   1   1   0
2   CJ McCollum       5        1   1   0   0   0

玩家 至少有 1 个位置,可以是多个(可以是全部 5 个)。 以后不会发明新职位,也不会删除任何职位,只有这 5 个职位。

最佳答案

考虑这一列:

positions SET('PG', 'SG', 'SF', 'PF', 'C') NOT NULL

考虑设置/更改/获取数据的查询。然后阅读文档以了解您必须使用 SET 的扭曲方式。

关于mysql - 在这种情况下,非规范化表是可接受的选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47844577/

相关文章:

database - postgresql 8.3 恢复数据库出错

android - 你能在你的android上升级sqlite3版本吗?

database - 数据库表和面向对象类之间有关系吗?

php - mysqldump php 命令 easyphp

mysql - 如何在MySQL中过滤日期的记录?

mysql - 无法更新的 Sequelize 列

SQL历史表设计

php - woocommerce 产品类别短代码分页不起作用

sql - 使用 liquibase 更新表中的一行

database-design - 用于制作用户支持票系统的数据库模型