mysql на Delete / Update или обработайте это в коде (например, PHP) - PullRequest
0 голосов
/ 27 июля 2011

У меня есть некоторые проблемы, чтобы найти решение для реализации.

Я должен спроектировать новую базу данных, используя 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

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Я хотел бы оставить все эти отношения в базе данных ... отношения в базе данных лучше, чем реализовать их в коде ... надежно, оптимизировано, производительность лучше.

1 голос
/ 27 июля 2011

Мое предложение будет заключаться в реализации ограничений в вашей РСУБД. Он обеспечивает целостность данных , лучшую производительность , меньше кодирования и меньше вероятность несоответствий , вызванных программистом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...