我有一个应用程序通过LDAP
进行身份验证,并返回JWT
与已登录用户的sAMAccountname
。
此应用程序有一个MySQL
数据库,我想将用户存储在不同的表(像createdBy,updatedBy等字段)中,我想知道什么是正确的处理这个问题的方法:
VARCHAR(25)
)通常情况下我会选择“id”方式,在我看来它更快更容易阅读,但我并不是真的要从LDAP字典中链接用户并在我的数据库中更改它们的ID,所以老实说我会选择第一个选项。
将字符串用作uid
的优点/缺点是什么?在我的情况下,它可能仅适用于updatedBy
,cratedBy
,deletedBy
等状态。因此,我不会在使用用户标识符的多个表之间建立硬链接。
答案 0 :(得分:0)
我认为您应该使用代理主键创建用户表(自动增加一个)并在sAMAccount列上创建唯一索引。
自然主键是好的,因为它们只是自然地描述了他们指向的记录。但是使用它们的缩小是因为它们在索引中消耗了太多空间。索引查找/重建速度较慢。表也占用更多空间。
答案 1 :(得分:0)
我使用id作为主键连接所有内容。
ONe的意思是sAMAccountName
并非必需的唯一。想想用户改变她或他的名字。然后sAMAccountName
可能会发生变化,但它仍然是同一个用户。当您通过ID连接所有内容时,您可以更改sAMAccountName
- 字段而不会破坏所有内容。
但那只是我的2美分