Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zapisać jedną encję Doctrine w dwóch tabelach bazy danych (wymagane do optymalizacji MySQL)

Zaproponuję inne podejście, chociaż to nieco starsze pytanie. Zamiast tworzyć dwie jednostki, powinieneś stworzyć trzy.

Utwórz FileMetadata, który przechowuje nazwę, typ MIME itp. Utwórz FileContent, który przechowuje zawartość. Następnie utwórz trzecią encję File, która utrzymuje połączenie jeden do jednego z jednym z pozostałych typów i daj mu kilka metod, które po prostu wywołują metody pasujące na podencjach.

Na przykład w File, metoda setName wyglądałaby tak:

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

A zestaw wyglądałby tak:

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

Konstruktor jednostki File powinien utworzyć nowy FileMetadata i nowy FileContent podczas tworzenia i NIE powinien mieć metody setFilemetadata ani setFilecontent; te dwie jednostki powinny być całkowicie osłonięte przed twoją aplikacją.

Teraz masz encję File, która obsługuje dokładnie tak, jak chcesz (pojedyncza encja, bez dodatkowych encji podrzędnych), która jest nadal przechowywana w dwóch (no cóż, trzech naprawdę) różnych tabelach.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php, serwer mysql zniknął

  2. Liczenie wierszy z podzapytania

  3. MySQL:Porównaj MIĘDZY czasem

  4. jak dodać plik jar sterownika mysql w zaćmieniu?

  5. Suma skumulowana w ciągu dni