在 MySQL 数据库中使用 sAMAccountName 作为 uid

Using sAMAccountName as uid in MySQL database

我有一个应用程序使用 LDAP 和 returns a JWT 与已登录用户的 sAMAccountname 进行身份验证。

此应用程序有一个 MySQL 数据库,我想将用户存储在不同的 table 中 (字段如 createdBy、updatedBy 等) 我想知道处理这个问题的正确方法是什么:

通常我会选择 "id" 方式,在我看来它更快更容易阅读,但我并不是很喜欢 link 从 LDAP 字典中获取用户并更改他们在我的 id 中数据库,老实说我会选择第一个选项。

将字符串用作 uid 的 pro/cons 是什么?在我的情况下,它可能仅适用于 updatedBycratedBydeletedBy 等状态,因此我不会在多个 table 之间遇到困难 link使用用户标识符。

我认为您应该使用代理主键(自动递增)创建用户 table 并在 sAMAccount 列上创建唯一索引。

自然主键很好,因为它们只是自然地描述了它们指向的记录。但是使用它们的缩减是它们在索引中消耗了太多space。索引查找/重建速度较慢。表格也消耗更多 space。

我会使用 id 作为主键连接所有内容。

一件事是 sAMAccountName 不一定是唯一的。想一想用户更改她或他的名字。 sAMAccountName 可能会改变,但它仍然是同一个用户。当您通过 ID 连接所有内容时,您可以更改 sAMAccountName 字段而不会破坏所有内容。

但这只是我的 2 美分