
Przykładowo:
Mysql:
Mamy 3 tabele: documents1, documents2, documents3 (to trzy różne tabele, bo prawie wszystkie kolumny są różne).
Następnie mamy kolejną tabele np. files, która zawiera kolumny, mogące być puste, z kluczami do tych dokumentów, czyli document1_id, document2_id, document3_id.
I to tylko przykładowo są to 3 tabele, ale możliwe, że w przyszłości zostaną dodane jeszcze jakieś tabele.
Pytanie pierwsze: czy to dobry sposób na dodawanie kluczy obcych? Do tabeli files trzeba będzie po prostu dodawać kolejne kolumny _id ?
W klasach po stronie php:
Document1/2/3 implementują interfejs z metodą, która zwraca nazwę kolumny klucza obcego, np iDoc.
Kod
interface iDoc
{
getColumnName();
}
{
getColumnName();
}
Klasa File ma gettery i settery np:
Kod
getDocument1(){
$this->document1 = Document1::findById($this->document1_id)
}
$this->document1 = Document1::findById($this->document1_id)
}
itd.
oraz metode statyczną
Kod
findByDoc(iDoc document)
{
//no i tu zapytanie
WHERE $document->getColumnName()=$document->id
}
{
//no i tu zapytanie
WHERE $document->getColumnName()=$document->id
}
Pytanie 2: Czy to jest właściwe pobieranie plików przez tą kolumnę? Czy jest inna, lepsza metoda?
Pytanie 3: Jak teraz pobrać dokument z klasy plik?
Bo oczywiście można to zrobić jakąś metodą i sprawdzać if'ami:
Kod
getDoc(){
if($this->document1){
return $this->document1;
}else {} //itd
}
if($this->document1){
return $this->document1;
}else {} //itd
}
ale przy dochodzeniu tabel będzie trzeba tą funkcję przerabiać. Jaka jest lepsza droga?
Może pytania łatwe dla tych zaawansowanych, ale jestem samoukiem i chciałbym się dowiedzieć jak to wygląda poprawnie, a nie żeby działało i jak mi się wydaję

Dzięki z góry za odpowiedzi
