gpt4 book ai didi

mysql - 为用户身份验证创建表 - 改进空间?

转载 作者:行者123 更新时间:2023-11-29 05:42:09 25 4
gpt4 key购买 nike

目前我正在开发一个网络应用程序。为此,我需要创建一个用于用户身份验证的数据库。

我有类似以下的想法:

create table users
(
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(100) NOT NULL,
password VARCHAR(60) NOT NULL,
PRIMARY_KEY(id),
UNIQUE(username)
);

create table roles
(
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
role VARCHAR(100) NOT NULL,
PRIMARY_KEY(id),
UNIQUE(role)
);

create table user_roles
(
user_id SMALLINT UNSIGNED NOT NULL,
role_id SMALLINT UNSIGNED NOT NULL,
PRIMARY_KEY(user_id)
UNIQUE (user_id, role_id),
);

密码是固定大小的,但我使用 varchar 因为我在某个地方读过,在一个表中你有 charvarchar 列, char 列被转换为 varchar

此外,使用 FOREIGN KEY CONSTRAINTS 是否有益?

最佳答案

  1. 不要对 ID 使用 SMALLINT。严重地。为什么会有人这样做!?使用更大的整数类型。
  2. user_roles 上的主键不起作用。将 (user_id, role_id) 设为主键,并在您要查询的字段上放置单独的(非唯一的)索引。
  3. 您可以添加将 user_roles 链接到其他表的外键。如果您使用 ON DELETE CASCADE,它甚至会在您删除用户或角色时删除过时的链接。

关于mysql - 为用户身份验证创建表 - 改进空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5881785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com