Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách lưu một thực thể Doctrine vào hai bảng cơ sở dữ liệu (bắt buộc để tối ưu hóa MySQL)

Tôi sẽ đề xuất một cách tiếp cận khác mặc dù đó là một câu hỏi hơi cũ. Thay vì tạo hai thực thể, bạn nên tạo ba thực thể.

Tạo FileMetadata, chứa tên, mimetype, v.v. Tạo FileContent, chứa nội dung. Sau đó, tạo một Tệp thực thể thứ ba chứa kết nối 1-1 với một trong các loại khác và cung cấp cho nó một loạt các phương thức mà chỉ cần gọi các phương thức so khớp trên các thực thể con.

Vì vậy, ví dụ trong File, phương thức setName sẽ giống như sau:

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

Và bộ sẽ giống như thế này:

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

Phương thức khởi tạo của thực thể Tệp phải tạo một FileMetadata mới và một FileContent mới khi tạo và KHÔNG được có phương thức setFilemetadata hoặc setFilecontent; hai thực thể này phải được bảo vệ hoàn toàn khỏi ứng dụng của bạn.

Bây giờ bạn có thực thể Tệp, xử lý chính xác như bạn muốn (một thực thể duy nhất, không có thực thể con bổ sung) vẫn được lưu trữ gọn gàng trong hai (tốt, ba bảng thực sự) khác nhau.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để hiển thị chữ cái đầu tiên dưới dạng chữ hoa?

  2. JDBC VS Hibernate

  3. Thiết kế bảng hóa đơn

  4. Tạo cơ sở dữ liệu khi khởi động docker-soạn

  5. Hết thời gian kết nối trong thời gian bay