eğer veri tipleri birbiriyle hiç alakalı olmayan şeyler değilse hepsine ayrı tablo açmana gerek yok. hepsi insan bunların, aynı tabloda olabilirler.
users
id
name
role_id
type_id
roles
id
name (admin, demo kullanıcı, premium, vb)
types
id
name (avukat, muhasebeci, doktor)
bir kişi eğer birden fazla rol alabiliyorsa o zaman mecbur ortak tablo (roles_users veya role_user adında, hangi isimlendirmeyi seçeceğin sana ve hangi ORM'i kullandığına bağlı) açmak gerekecek. bunu yapmak zorunda kalsan bile eğer kullanıcıları users tablosunda tutuyorsan toplam 3 tablon olacak. diğer türlü yapsaydın her kullanıcı tipi için yeni bir ortak tablo açmak zorunda kalacağın için çok fazla tablon olacaktı.
isimlendirmeyi düzgün yaptığın sürece üstteki sistem güzel çalışıyor.
tabloların ID'leri için sadece id koyuyorum, başka tabloya foreign key olarak eklerken başına tablo adının tekil halini ekliyorum, user_id gibi.
ortak tablo içinse alfabetik ve çoğul gidiyorum, books_users gibi.
sütun adlarını da sade tutuyorum. user_name / user_email yerine name, email gibi.
Bir ORM bul, onun standardını kullan derim.
0