remember me表索引

gev0vcfq  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(347)

我正在mariadb中创建一个表来存储“记住我”—cookie值:

CREATE TABLE u_remember_me (
    u_user_common_id INT UNSIGNED NOT NULL,
    lookup_key       VARCHAR(30) NOT NULL,
    token_hash       VARCHAR(30) NOT NULL,
    created          DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,

    INDEX (u_user_common_id),
    FOREIGN KEY (u_user_common_id) REFERENCES u_user_common (id) ON DELETE CASCADE ON UPDATE CASCADE,
    PRIMARY KEY (lookup_key),
    UNIQUE KEY (lookup_key, token_hash)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci ENGINE InnoDB;

我总是按lookup\ key字段进行查找,因此选择它作为主键(随机字符串)。无法将列u\u user\u common\u id设置为主键,因为由于多个浏览器或计算机,用户可以分配多个(查找\u键、令牌\u哈希)。对于主键(性能、插入等),lookup\u key是一个错误的选择吗。也。。我应该将主键设置为(lookup\u key,token\u hash)并删除unique约束吗?我之所以选择不使用代理项键是因为它永远不会被使用,但我也不确定这是否是一个好的决定(无论如何我需要索引查找\u键)。

bfnvny8b

bfnvny8b1#

我想你还没有弄清楚什么取决于什么。
lookup_key (随机字符串)与单个用户关联?如果是的话, PRIMARY KEY(lookup_key) 然后扔掉那些垃圾。
如果用户可以从不同的浏览器连接,并且您希望发生不同的事情,那么您没有指定任何不同的数据。

相关问题