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

标签 mysql architecture ldap

我有一个使用 LDAP 进行身份验证的应用程序,并返回一个 JWT 以及已登录用户的 sAMAccountname

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

  • 使用 sAMAccount 名称作为标识符(因此 createdBy 将是 VARCHAR(25))
  • 使用链接表将 sAMAccountname 与自动递增的标识符相匹配

通常我会选择“id”方式,在我看来它更快更容易阅读,但我并不真正喜欢从 LDAP 字典链接用户并更改他们在我的数据库中的 id,所以老实说我会选择第一个选项。

使用字符串作为 uid 的优点/缺点是什么?在我的例子中,它可能仅适用于 updatedBycratedBydeletedBy 等状态,因此我不会在多个表之间使用硬链接(hard link)一个用户标识符。

最佳答案

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

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

关于mysql - 在 MySQL 数据库中使用 sAMAccountName 作为 uid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29412115/

相关文章:

java - LDAP 与 activiti 集成

mysql - grails 3.2.1/Tomcat 7.0.72 - 调用 id 的 getter 时发生 IllegalArgumentException

javascript - 通过 Node.js 中的函数将数据库结果保存在 Dictionary 中

.net - CRUD样式的数据驱动的分布式.NET应用程序体系结构问题

ios - 在 64 位应用程序中使用 32 位库

spring - 在配置中自定义 LdapAuthoritiesPopulator

php - 在没有注册帐户的情况下识别应用程序的用户

javascript - 使用 AJAX 在 Node.js 上进行数据库查询

architecture - 依赖隔离意义

java - 将 Ldap 组映射到 tomcat 中应用程序的角色