Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да запишете един обект на Doctrine в две таблици на база данни (необходимо за оптимизиране на MySQL)

Ще предложа различен подход, въпреки че това е малко по-стар въпрос. Вместо да правите два обекта, трябва да направите три.

Създайте FileMetadata, който съдържа име, mimetype и т.н. Създайте FileContent, който съдържа съдържанието. След това създайте файл на трети обект, който поддържа връзка едно към едно с един от всеки от другите типове, и му дайте набор от методи, които просто извикват съвпадащите методи на подсъектите.

Така например във File методът setName би изглеждал така:

  public function setName() {
    $this->getFileMetadata()->getName();
  }

И наборът ще изглежда така:

  public function setName( $name ) {
    $this->getFileMetadata()->setName( $name );
  }

Конструкторът на обекта File трябва да създаде нов FileMetadata и нов FileContent при създаването и НЕ трябва да има метод setFilemetadata или setFilecontent; тези два обекта трябва да бъдат напълно защитени от вашето приложение.

Сега имате обекта File, който работи точно както искате (един обект, без допълнителни под-обекти), който все още се съхранява спретнато в две (добре, три наистина) различни таблици.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO::__construct():Сървърът изпрати набор от знаци (255), неизвестен на клиента. Моля, докладвайте на разработчиците

  2. cakephp:как да накарам СЕГА() да работи в състояние на търсене?

  3. Как извършваме операции върху SQL двоичен тип данни?

  4. Случайно изтрих администраторския акаунт в моя phpMyAdmin. Как мога да дам отново привилегии на [email protected]?

  5. Урок за MySQL:MySQL IN клауза (основна)