0

全部。

现在我正在为网站创建 mysql 表的设计。下面你可以看到它。我有 3 张桌子:

  1. tbl_user - 对于用户;
  2. tbl_session - 用于会话和
  3. tbl_block - 用于阻止用户 - 它的工作方式如下:
    • 如果block == 0您可以登录,
    • 如果block == 1您无法登录: login_number - 递增计数(默认 == 1)如果用户输入 3 次错误密码(login_number == 4),它将被阻止 1 小时(阻止将更改为“1”并且 time_blocked 将设置)
    • 如果block == 2您因其他原因无法登录。

-- -----------------------------------------------------
-- Table `mydb`.`tbl_user`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`tbl_user` (
  `user_id` INT NOT NULL AUTO_INCREMENT ,
  `username` VARCHAR(200) NULL ,
  `password` VARCHAR(200) NULL ,
  `salt` VARCHAR(200) NULL ,
  `info` VARCHAR(200) NULL ,
  `date_created` DATETIME NULL ,
  PRIMARY KEY (`user_id`) ,
  UNIQUE INDEX `username_UNIQUE` (`username` ASC) )
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`tbl_session`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`tbl_session` (
  `session_id` INT NOT NULL AUTO_INCREMENT ,
  `user_id` VARCHAR(200) NULL ,
  `data` VARCHAR(200) NULL ,
  `info` VARCHAR(200) NULL ,
  `date_created` DATETIME NULL ,
  `date_expired` DATETIME NULL ,
  PRIMARY KEY (`session_id`) ,
  UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC) )
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`tbl_user_block`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`tbl_user_block` (
  `block_id` INT NOT NULL AUTO_INCREMENT ,
  `user_id` VARCHAR(45) NULL ,
  `block` TINYINT NULL DEFAULT 0 ,
  `login_number` TINYINT NULL DEFAULT 1 ,
  `info` VARCHAR(200) NULL ,
  `date_blocked` DATETIME NULL ,
  PRIMARY KEY (`block_id`) ,
  UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC) )
ENGINE = InnoDB;

可以吗?我需要改进或改变什么?

4

1 回答 1

1

我会使用它变为 UNBLOCKED 的时间而不是它被阻塞的时间(简化解锁逻辑),但你所拥有的支持你所描述的。

于 2012-09-10T10:49:38.200 回答