簡體   English   中英

刪除/更新mysql或在代碼中處理此問題(例如PHP)

[英]mysql on Delete/Update or handle this in Code (e.g. PHP)

我有一些問題需要找到一個實現的decission。

我必須使用mysql設計一個新的數據庫。 現在我發現我可以在更新或刪除時執行mysqlinternal操作(NULL / NO ACTION / CASCADE)。

使用刪除MYSQL內部的示例:

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內部upate / delete Action

提前致謝。

我的建議是在你的RDBMS中實現約束。 它提供了數據完整性更好的性能更少的編碼 ,以及程序員引起的不一致的可能性

我想把所有這些關系留給數據庫...數據庫中的關系比在代碼中實現它更好...可靠,優化,性能更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM