在这种情况下,非规范化表是否可以接受?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在这种情况下,非规范化表是否可以接受?相关的知识,希望对你有一定的参考价值。

我希望您对哪种表格结构有所了解。

让我们说这是一个存储NBA球员信息的表格。所以你会有id, name, team_id等。

但是为了存储玩家的位置(Point Guard,Power Forward,Center等),我应该创建一个单独的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表上的列,因此如果玩家玩PGSG,那么这些字段将为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

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

答案

考虑这一列:

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

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

以上是关于在这种情况下,非规范化表是否可以接受?的主要内容,如果未能解决你的问题,请参考以下文章

将非规范化数据加载到数据仓库中

ReleaseMutex:从非同步代码块调用对象同步方法

仅在按照意图进行时才更改片段(在这种情况下,他们实际上共享应用程序)

SQL - 在这种情况下可以使用 COUNT() 吗?

非规范化表和重复数据

ASP.NET CoreMVC模型绑定:非规范正文内容的处理