Przyjmijmy, że mamy table users zawierającą podstawowe informacje takie jak login i hasło.
W systemie jest kilka rodzajów użytkowników powiedzmy np. uczeń i nauczyciel.
W tabeli user_profile przechowuje imię i nazwisko i taka tabela nadaje się zarówno dla user o typie konta "teacher" jak i "student".
Teraz dochodzi typ "school". To też fizycznie użytkownik mający logi i hasło czyli wiersz w "users" ale nie jest mu potrzebny imię i nazwisko, a nazwa.
W profile mogę mieć wszystkie 3 kolumny NULL (first_name, last_name, name) ale to nie o takie kwiatki chodzi.

I teraz pytanie czy to jest jakiś pattern, jakie są dobre praktyki, nazewnictwo itp?
Zastanawiam się jak np. w Laravel takie relacje dobrze ustawić bo
Model user "hasOne" profil, ale może też "hasOne" nie profil, a "profil szkoły" gdybym przyjął różne tabele.
https://laravel.com/docs/5.3/eloquent-relat...rphic-relations to raczej nie rozwiąże problemu bo to odwrotna sytuacja (poza tym mało się te rozwiązanie podoba ponieważ uniemożliwia narzucenie kluczy obcych).