在我的 Web 应用程序中,用户可以定义文档并给它们一个唯一的名称来标识该文档,以及一个人类用来引用该文档的友好名称。以下面的表模式为例:
| id | name | friendly_name |
-----------------------------------------------
| 2 | invoice-2 | Invoice 2 |
在此示例中,我使用id列作为主键,这是一个自动递增的数字。由于文档 ( name) 已经有一个自然 ID,我也可以这样做:
| name | friendly_name |
--------------------------------------
| invoice-2 | Invoice 2 |
在本例中,name是文档的主键。我们已经消除了该id字段,因为它本质上只是 的副本,因为表格中的每个文档无论如何name都必须具有唯一性。name
这也意味着当我从外键关系中引用文档时,我必须调用它document_name而不是document_id.
这方面的最佳做法是什么?从理论上讲,我完全可以将 aVARCHAR用作主键,但它是否有任何缺点,例如性能开销?