mysql在代码中删除/更新或处理此问题(例如PHP)
我有一些问题需要为实现找到决策 我必须使用mysql设计一个新的数据库。 现在我发现我可以在更新或删除时执行mysqlinternal操作(NULL/NO-ACTION/CASCADE) 使用ON DELETE MYSQL INTERNAL的示例: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 ,
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中实现约束。它提供了数据完整性、更好的性能、更少的编码和更少的由程序员引起的不一致的机会。我想把所有这些关系都留给数据库……数据库中的关系比在代码中实现它要好。。。可靠、优化、性能更好