我有一个使用 LDAP
进行身份验证的应用程序,并返回一个 JWT
以及已登录用户的 sAMAccountname
。
此应用程序有一个 MySQL
数据库,我想将用户存储在不同的表中(字段如 createdBy、updatedBy 等) 我想知道什么是处理这个的正确方法:
- 使用 sAMAccount 名称作为标识符(因此 createdBy 将是
VARCHAR(25)
) - 使用链接表将 sAMAccountname 与自动递增的标识符相匹配
通常我会选择“id”方式,在我看来它更快更容易阅读,但我并不真正喜欢从 LDAP 字典链接用户并更改他们在我的数据库中的 id,所以老实说我会选择第一个选项。
使用字符串作为 uid
的优点/缺点是什么?在我的例子中,它可能仅适用于 updatedBy
、cratedBy
、deletedBy
等状态,因此我不会在多个表之间使用硬链接(hard link)一个用户标识符。
最佳答案
我认为您应该使用代理主键(自动递增的主键)创建用户表,并在 sAMAccount 列上创建唯一索引。
自然主键很好,因为它们只是自然地描述了它们指向的记录。但是使用它们的缩减是它们在索引中占用太多空间。索引查找/重建速度较慢。表格也占用更多空间。
关于mysql - 在 MySQL 数据库中使用 sAMAccountName 作为 uid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29412115/