mysql在代码中删除/更新或处理此问题(例如PHP)

mysql在代码中删除/更新或处理此问题(例如PHP),php,mysql,triggers,Php,Mysql,Triggers,我有一些问题需要为实现找到决策 我必须使用mysql设计一个新的数据库。 现在我发现我可以在更新或删除时执行mysqlinternal操作(NULL/NO-ACTION/CASCADE) 使用ON DELETE MYSQL INTERNAL的示例: CREATE TABLE IF NOT EXISTS `mydb`.`users` ( `idusers` INT UNSIGNED NOT NULL AUTO_INCREMENT , `name` CHAR(30) NOT NULL ,

我有一些问题需要为实现找到决策

我必须使用mysql设计一个新的数据库。 现在我发现我可以在更新或删除时执行mysqlinternal操作(NULL/NO-ACTION/CASCADE)

使用ON DELETE MYSQL INTERNAL的示例:

CREATE  TABLE IF NOT EXISTS `mydb`.`users` (
  `idusers` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `name` CHAR(30) NOT NULL ,
  `mail` CHAR(50) NOT NULL ,
  PRIMARY KEY (`idusers`) )
ENGINE = InnoDB;


CREATE  TABLE IF NOT EXISTS `mydb`.`avatars` (
  `users_idusers` INT UNSIGNED NOT NULL ,
  `size` VARCHAR(45) NOT NULL ,
  `color` VARCHAR(45) NOT NULL ,
  `weight` VARCHAR(45) NOT NULL ,
  PRIMARY KEY (`users_idusers`) ,
  CONSTRAINT `fk_avatars_users`
    FOREIGN KEY (`users_idusers` )
    REFERENCES `mydb`.`users` (`idusers` )
    ON DELETE CASCADE
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
或者,这样做更好吗?每次更新都要从应用程序代码中完全删除:

CREATE  TABLE IF NOT EXISTS `mydb`.`users` (
  `idusers` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `name` CHAR(30) NOT NULL ,
  `mail` CHAR(50) NOT NULL ,
  PRIMARY KEY (`idusers`) )
ENGINE = InnoDB;



CREATE  TABLE IF NOT EXISTS `mydb`.`avatars` (
  `users_idusers` INT UNSIGNED NOT NULL ,
  `size` VARCHAR(45) NOT NULL ,
  `color` VARCHAR(45) NOT NULL ,
  `weight` VARCHAR(45) NOT NULL ,
  PRIMARY KEY (`users_idusers`) ,
  CONSTRAINT `fk_avatars_users`
    FOREIGN KEY (`users_idusers` )
    REFERENCES `mydb`.`users` (`idusers` ))
ENGINE = InnoDB;
现在,我不确定哪种方法是确保高性能水平的最佳方法

我应该用编程语言实现关系并查询与当前数据集相关的表,还是应该以允许mysql内部升级/删除操作的方式实现数据库


提前感谢。

我的建议是在RDBMS中实现约束。它提供了数据完整性、更好的性能、更少的编码和更少的由程序员引起的不一致的机会。

我想把所有这些关系都留给数据库……数据库中的关系比在代码中实现它要好。。。可靠、优化、性能更好