Entity User, Teacher i Student

0

Cześć mam pytanie, robię prosty projekt ot typowa wirtualna uczelnia i zastanawiam się nad strukturą. Dokładnie rzecz biorąc mam Pojo User gdzie będzie przechowywany login hasło rola iii no właśnie nie mam pojęcia co, mianowicie mam również Pojo Nauczyciel i Uczeń i obydwoje mają kilka wspólnych i kilka różnych pól teraz nie mam pojęcia w jaki sposób zrobić to tak żeby łączyć te dwie tabele z userem, wymyśliłem, żeby w User były dodatkowo dwa pola tzn student_id i teacher_id ale jedno z tych pól musiałoby być puste w bazie co chyba nie jest zbyt dobrą praktyką, próbowałem również nadać jedną wspólną nazwę kolumny dla tych pól ale niestety to tak nie działa. A może po prostu dodać userDetails i kiedy dodaje np nowego nauczyciela nie dodawać mu numeru indeksu? Ktoś mógłby mi podpowiedzieć w jaki sposób rozwiązać ten problem?

0

JPA - nie wiem czy o tym piszesz - ma możliwośc dziedziczenia, przy czym w bazie SQL to może być zrealizowane w trojaki sposób. Którą implementację wybrać ... zależy o ilości pól, not-nulli, planowanej wydajności itd.. to działa. Jak w to wejdziesz, zrozumiesz że zbieżne z Twoimi poszukiwaniami, może być kolumna discriminator, albo Id na zrelacjonowane tabele itd..

https://docs.oracle.com/cd/E16439_01/doc.1013/e13981/cmp30cfg016.htm

PS. niekonieczne dane autoryzacyjne a te osoby to ta sama hierarchia (admin bazy, sekretariat, dziekanat ???), ale w ćwiczebnym projekcie może być

PPS. przy czym trzeba porzucić wyobrażanie sobie jako tabele, trzeba sobie obrazować jako obiektowe encje, np "from User u" choć to klasa można powiedzieć abstrakcyjna (tak rozumiem twoją wypowiedź), nie istnieje żaden obiekt dokładnie tej klasy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1