没有ID列时如何存储外键?

时间:2014-02-26 10:41:07

标签: mysql database normalization

我想知道在MySQL中分割表时理论上是否理论上可以删除ID列。

假设我有一张包含此信息的表格:

+-----------+-----------+  +-----------+---------+
|   Name    | CountryID |  | CountryID | Country |
+-----------+-----------+  +-----------+---------+
| Theressa  |         1 |  |         1 | America |
| Chiquita  |         1 |  +-----------+---------+
| Harlan    |         1 |
| Vanda     |         1 |
| Dudley    |         1 |
| Catherine |         1 |
| Tad       |         1 |
| Darcey    |         1 |
| Antonette |         1 |
| Renetta   |         1 |
| Arla      |         1 |
| Emery     |         1 |
| Alla      |         1 |
| Antonetta |         1 |
+-----------+-----------+
+-----------+---------+  +---------+
|   Name    | Country |  | Country |
+-----------+---------+  +---------+
| Theressa  | America |  | America |
| Chiquita  | America |  +---------+
| Harlan    | America |
| Vanda     | America |
| Dudley    | America |
| Catherine | America |
| Tad       | America |
| Darcey    | America |
| Antonette | America |
| Renetta   | America |
| Arla      | America |
| Emery     | America |
| Alla      | America |
| Antonetta | America |
+-----------+---------+

下表可以占用比上面更少的空间吗?外键是否“理解”Person-table中的“America”链接到一个Country-table,占用的空间比ID-version少,因为它已经引用了另一个表。

我很困惑自己,所以我希望你们中的一些人能理解我的问题。

1 个答案:

答案 0 :(得分:0)

想象一下一个智能数据库,用任意指针替换字符串“America”。此解决方案需要具有带有数字ID的列,并且它将是相同的

使用int ID。即使它不是真正的问题,它也会节省空间。它将使索引更快地工作并为您节省很多问题。让我们说有人写“美国”和“美国”。字符串看起来更复杂。各国的不同语言名称不同。这个国家有特殊性吗? “España”vs“西班牙”。

P.S。如果您想要清晰易读的主键,请使用ISO代码。示例“美国”。