在 MySQL 数据库中使用 sAMAccountName 作为 uid
Using sAMAccountName as uid in MySQL database
我有一个应用程序使用 LDAP
和 returns a JWT
与已登录用户的 sAMAccountname
进行身份验证。
此应用程序有一个 MySQL
数据库,我想将用户存储在不同的 table 中 (字段如 createdBy、updatedBy 等) 我想知道处理这个问题的正确方法是什么:
- 使用 sAMAccount 名称作为标识符(因此 createdBy 将是
VARCHAR(25)
)
- 使用 link table 将 sAMAccountname 与自动递增的标识符相匹配
通常我会选择 "id" 方式,在我看来它更快更容易阅读,但我并不是很喜欢 link 从 LDAP 字典中获取用户并更改他们在我的 id 中数据库,老实说我会选择第一个选项。
将字符串用作 uid
的 pro/cons 是什么?在我的情况下,它可能仅适用于 updatedBy
、cratedBy
、deletedBy
等状态,因此我不会在多个 table 之间遇到困难 link使用用户标识符。
我认为您应该使用代理主键(自动递增)创建用户 table 并在 sAMAccount 列上创建唯一索引。
自然主键很好,因为它们只是自然地描述了它们指向的记录。但是使用它们的缩减是它们在索引中消耗了太多space。索引查找/重建速度较慢。表格也消耗更多 space。
我会使用 id 作为主键连接所有内容。
一件事是 sAMAccountName
不一定是唯一的。想一想用户更改她或他的名字。 sAMAccountName
可能会改变,但它仍然是同一个用户。当您通过 ID 连接所有内容时,您可以更改 sAMAccountName
字段而不会破坏所有内容。
但这只是我的 2 美分
我有一个应用程序使用 LDAP
和 returns a JWT
与已登录用户的 sAMAccountname
进行身份验证。
此应用程序有一个 MySQL
数据库,我想将用户存储在不同的 table 中 (字段如 createdBy、updatedBy 等) 我想知道处理这个问题的正确方法是什么:
- 使用 sAMAccount 名称作为标识符(因此 createdBy 将是
VARCHAR(25)
) - 使用 link table 将 sAMAccountname 与自动递增的标识符相匹配
通常我会选择 "id" 方式,在我看来它更快更容易阅读,但我并不是很喜欢 link 从 LDAP 字典中获取用户并更改他们在我的 id 中数据库,老实说我会选择第一个选项。
将字符串用作 uid
的 pro/cons 是什么?在我的情况下,它可能仅适用于 updatedBy
、cratedBy
、deletedBy
等状态,因此我不会在多个 table 之间遇到困难 link使用用户标识符。
我认为您应该使用代理主键(自动递增)创建用户 table 并在 sAMAccount 列上创建唯一索引。
自然主键很好,因为它们只是自然地描述了它们指向的记录。但是使用它们的缩减是它们在索引中消耗了太多space。索引查找/重建速度较慢。表格也消耗更多 space。
我会使用 id 作为主键连接所有内容。
一件事是 sAMAccountName
不一定是唯一的。想一想用户更改她或他的名字。 sAMAccountName
可能会改变,但它仍然是同一个用户。当您通过 ID 连接所有内容时,您可以更改 sAMAccountName
字段而不会破坏所有内容。
但这只是我的 2 美分