Dine instinkter for ikke at skabe et stort bord med masser af NULLER er lige på. Det er en dårlig idé, set fra et opbevarings-/genhentnings-/vedligeholdelsessynspunkt såvel som et datavalideringssynspunkt (mere om det senere).
De to mest almindelige tilgange:
1) Har en brugertabel med alle de almindelige felter i den, inklusive et "userType" felt. Hav derefter en separat tabel for hver brugertype, der indeholder de ekstra felter. Alle brugere har en række i brugertabellen og en eller flere af de specifikke brugertypetabeller. Dette er den mest normaliserede og mest effektive til opbevaring og hurtige logins. Dette lader dig også bruge kontraints og fremmednøgler for at sikre, at alle nødvendige oplysninger for hver brugertype er tilgængelige.
2) Har en brugertabel med alle de almindelige felter i den. Få en anden tabel kaldet noget i stil med Brugerattributter der har felter for bruger-id, nøgle og værdi. Eventuelle ekstra metadata for en bestemt bruger kan gemmes her. Dette har den fordel, at det ikke kræver nogen databaseadministration at tilføje nye brugertyper eller metadata, der skal gemmes for hver brugertype. Det lader dig dog ikke foretage nogen datavalidering på DB-niveau.