我知道通常建议使用代理主键而不是自然主键,但是在用户名方面,有没有支持代理主键的论点呢?
我知道通常建议使用代理主键而不是自然主键,但是在用户名方面,有没有支持代理主键的论点呢?
从客户的角度来看,是的。我不想让我的用户名是DWong1145。
从某种意义上来说,这是一个不错的选择,但您必须考虑是否真的想这样做。例如,您有一个使用特定用户名的用户,然后该用户被“删除”(或标记为已删除)。因此,实际上没有任何理由不允许创建另一个具有相同用户名的用户,但是它已经被“占用”,因为它是主键。
使用字符串作为主键的一个很大的缺点,无论它是一个用户名还是其他什么,就是所有引用该表的外键列也必须是字符串,这既慢又浪费更多的空间。