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

时间:2015-04-02 11:42:39

标签: mysql architecture ldap

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

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

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

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

将字符串用作uid的优点/缺点是什么?在我的情况下,它可能仅适用于updatedBycratedBydeletedBy等状态。因此,我不会在使用用户标识符的多个表之间建立硬链接。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

ONe的意思是sAMAccountName并非必需的唯一。想想用户改变她或他的名字。然后sAMAccountName可能会发生变化,但它仍然是同一个用户。当您通过ID连接所有内容时,您可以更改sAMAccountName - 字段而不会破坏所有内容。

但那只是我的2美分