Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menyimpan satu entitas Doctrine ke dua tabel database (diperlukan untuk optimasi MySQL)

Saya akan menyarankan pendekatan yang berbeda meskipun itu pertanyaan yang agak lama. Alih-alih membuat dua entitas, Anda harus membuat tiga.

Buat FileMetadata, yang menyimpan nama, mimetype, dll. Buat FileContent, yang menyimpan konten. Kemudian, buat File entitas ketiga yang menyimpan koneksi satu-ke-satu dengan salah satu dari masing-masing jenis lainnya, dan berikan sekelompok metode yang hanya memanggil metode yang cocok pada sub entitas.

Jadi misalnya di File, metode setName akan terlihat seperti ini:

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

Dan set akan terlihat seperti ini:

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

Konstruktor entitas File harus membuat FileMetadata baru dan FileContent baru saat pembuatan dan TIDAK boleh memiliki metode setFilemetadata atau setFilecontent; kedua entitas ini harus dilindungi sepenuhnya dari aplikasi Anda.

Sekarang Anda memiliki entitas File, yang menangani persis seperti yang Anda inginkan (satu entitas, tidak ada sub-entitas tambahan) yang masih tersimpan rapi di dua (well, tiga benar-benar) tabel yang berbeda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kursor Bersarang di Mysql

  2. cakephp persahabatan antara pengguna Menghubungkan model bersama

  3. Pertahankan nilai bidang setelah dikirim

  4. Tidak ada hasil SQL Query setelah impor CSV berhasil di mysql menggunakan LOAD DATA LOCAL INFILE

  5. Apakah ide yang baik untuk menggunakan Hibernate untuk mewakili hubungan tabel?