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.