我正在为武术学校创建一个等级和要求表。
每个学生都拥有武术等级。存储等级名称、腰带颜色和等级要求。每个等级都会有许多等级要求。每个要求都被视为仅针对引入该要求的级别的要求。每个要求都与特定的等级相关联。除白带外的所有级别都至少有一项要求。
我的 ER 图:
Rank and Requirement ER Diagram
排名表:
CREATE TABLE IF NOT EXISTS `rank` (
`rank_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`rank_nme` VARCHAR(45) NOT NULL,
PRIMARY KEY (`rank_id`))
ENGINE = InnoDB;
输出:
+------------+--------------+----------------+
| rank_id | INT(10) | AUTO_INCREMENT |
+------------+--------------+----------------+
| rank_nme | VARCHAR(45) | |
+------------+--------------+----------------+
要求表:
CREATE TABLE IF NOT EXISTS `requirement` (
`req_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`rank_id` INT UNSIGNED NOT NULL,
`req_nme` VARCHAR(45) NOT NULL,
`req_rank_nme` VARCHAR(45) NULL,
PRIMARY KEY (`req_id`),
INDEX `requirement_rank_id_idx` (`rank_id` ASC),
CONSTRAINT `requirement_rank_id_idx`
FOREIGN KEY (`rank_id`)
REFERENCES `rank` (`rank_id`)
ON DELETE RESTRICT
ON UPDATE CASCADE)
ENGINE = InnoDB;
输出:
+---------------+--------------+----------------+
| req_id | INT(10) | AUTO_INCREMENT |
+---------------+--------------+----------------+
| rank_id | INT(10) | |
+---------------+--------------+----------------+
| req_nme | VARCHAR(45) | |
+---------------+--------------+----------------+
| req_rank_nme | VARCHAR(45) | |
+---------------+--------------+----------------+
如果我做得对或错或者你们有修改或任何建议,需要帮助!谢谢!
最佳答案
首先,在第一个表中,您将需要一个唯一且自动递增的 id,以实现数据库良好实践。然后使用rank_id、rank_name。如果您想将排名与用户关联,则需要另一个外键来执行此操作。 user_id 来自 users.id 。
现在你的rank_id会递增,但我不认为这样做有什么意义。其余的我认为还可以。
关于php - MySQL Rank 升级要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22348724/