Mysql 约束和索引中的命名约定
索引和约束是否可以具有相同的名称以及推荐的命名约定Mysql 约束和索引中的命名约定,mysql,sql,Mysql,Sql,索引和约束是否可以具有相同的名称以及推荐的命名约定 CREATE TABLE IF NOT EXISTS `mydb`.`books` ( `id` INT NOT NULL AUTO_INCREMENT , `isbn` VARCHAR(45) NOT NULL , `category_id` INT NOT NULL , `publisher_id` INT NOT NULL , `year` YEAR NULL , PRIMARY KEY (`id`) , IN
CREATE TABLE IF NOT EXISTS `mydb`.`books` (
`id` INT NOT NULL AUTO_INCREMENT ,
`isbn` VARCHAR(45) NOT NULL ,
`category_id` INT NOT NULL ,
`publisher_id` INT NOT NULL ,
`year` YEAR NULL ,
PRIMARY KEY (`id`) ,
INDEX `fk_books_category_id` (`category_id` ASC) ,
INDEX `fk_books_publisher_id` (`publisher_id` ASC) ,
CONSTRAINT `fk_books_category_id`
FOREIGN KEY (`category_id` )
REFERENCES `mydb`.`categories` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_books_publisher_id`
FOREIGN KEY (`publisher_id` )
REFERENCES `mydb`.`publishers` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
没有这样的标准。尽管如此,在MYSQL中,不需要为外键约束指定符号名。如果没有给出名称,InnoDB会自动创建一个唯一的名称
尽管许多程序员喜欢使用
idx\uu
作为索引的前缀,使用fk\uu
作为外键。索引名称应以idx\u作为前缀只是一个建议,要将类型与名称分开,您也可以使用camelCasing,但是,如果您使用idx\u作为前缀,这将非常有用。我没有得到“将类型与名称分开”如果你想在category\u id
tryidx\u category\u id
上创建一个索引,那么类型和名称是什么样的?如果你想要一个外部约束,那么请尝试fk\u category\u id
Mysql workbench以fk\u category\u idx的形式创建它,我将坚持这一点。如果两者都被命名为相同的话,有什么害处吗伤害,但它会让你困惑,也不是一个好的做法遵循!!!k将保持它们的不同,这将使您的工作更轻松!!!:)如果我的答案对你有帮助,别忘了接受它作为答案!!!;)