Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 约束和索引中的命名约定_Mysql_Sql - Fatal编程技术网

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
try
idx\u category\u id
上创建一个索引,那么类型和名称是什么样的?如果你想要一个外部约束,那么请尝试
fk\u category\u id
Mysql workbench以fk\u category\u idx的形式创建它,我将坚持这一点。如果两者都被命名为相同的话,有什么害处吗伤害,但它会让你困惑,也不是一个好的做法遵循!!!k将保持它们的不同,这将使您的工作更轻松!!!:)如果我的答案对你有帮助,别忘了接受它作为答案!!!;)