Mysql 如何规范化我的表?

Mysql 如何规范化我的表?,mysql,database,normalization,Mysql,Database,Normalization,我现在的处境很糟糕。我想规范化我的表: Exam_Papers ID Country_Code Level 1 UK 1 2 UK 2 3 UK 3 4 UK 4 5 UK 5 6 UK 6 7 UK 7 8 SA

我现在的处境很糟糕。我想规范化我的表:

  Exam_Papers
ID    Country_Code    Level
1     UK               1
2     UK               2 
3     UK               3
4     UK               4
5     UK               5
6     UK               6
7     UK               7
8     SA               1
9     SA               2
10    SA               3
11    SA               4
12    SA               5
13    SA               6
14    SA               7
15    IN               1
16    IN               2
我知道我可以通过将级别放在一个单独的表中来规范化它,但是国家代码仍然会包含重复的数据,那么这个表应该如何规范化呢

国家代码和级别是否有自己的表

此外,在本例中,规范化有何好处,因为无论哪种方式,创建两个单独的表都意味着FK仍然会重复(例如,如果UK的ID为1,则我的表将包含7个1)


提前感谢

在这种情况下,您不需要制作两张表。因为正如你提到的,你仍然需要输入(可能是他们的id格式)。另外,我觉得如果换一种方式,SQL查询的性能会下降。

您能解释一下表中每一列的含义吗?如果您的表只包含这些字段,我看不出进行规范化的原因。您希望如何规范化这些字段?这样做能实现什么?这以什么方式不规范化?如果你有一个等级表和一个国家表,假设这些表会有一些键,这个表会参考,对吗?该键与此表中已有的键有何不同?如果您对国家代码有很长的描述,对级别有很长的描述,那么我可以看到您希望将它们放在单独的表中。但是如果没有国家代码的额外数据,或者级别只是一个数字,那么您现在拥有的看起来很好。@Walter_Ritzel您看到了,我读到规范化用于消除重复数据,在这种情况下,为什么规范化是不对的?何时进行规范化?当在两个或更多字段中发生重复时进行规范化,这些字段对特定数据集重复相同的值。在您的情况下,您提供的样本上的国家代码和级别不会重复。你有英国的1,2,3,4,5级。。。如果每行都有国家名称,那么建议您规范化创建国家表。