sql >> Database >  >> RDS >> Mysql

Een Doctrine-entiteit opslaan in twee databasetabellen (vereist voor MySQL-optimalisatie)

Ik ga een andere benadering voorstellen, ook al is het een wat oudere vraag. In plaats van twee entiteiten te maken, zou je er drie moeten maken.

Maak FileMetadata, die naam, mimetype, enz. bevat. Maak FileContent, die de inhoud bevat. Maak vervolgens een derde entiteitsbestand dat een één-op-één-verbinding heeft met een van elk van de andere typen, en geef het een aantal methoden die eenvoudigweg de overeenkomende methoden op de sub-entiteiten aanroepen.

Dus bijvoorbeeld in Bestand ziet de setName-methode er als volgt uit:

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

En de set zou er als volgt uitzien:

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

De constructor van de entiteit Bestand moet bij het maken een nieuwe FileMetadata en een nieuwe FileContent maken en mag GEEN methode setFilemetadata of setFilecontent hebben; deze twee entiteiten moeten volledig worden afgeschermd van uw toepassing.

Nu heb je de File-entiteit, die precies handelt zoals je wilt (een enkele entiteit, geen extra sub-entiteiten) die nog steeds netjes is opgeslagen in twee (nou ja, drie echt) verschillende tabellen.



  1. T-SQL:hoe parameters gebruiken in dynamische SQL?

  2. Tips voor het upgraden van Percona XtraDB Cluster naar 8.0

  3. Hoe haal ik één set gegevens uit een SQL-query uit meerdere tabellen?

  4. Waarom krijg ik Ora-30004 als het scheidingsteken sys_connect_by_path niet aanwezig is in kolomwaarden?