Witam.
Mam mały problem z zaprojektowaniem bazy danych.
W bazie chcę mieć użytkowników i role. Użytkownik może mieć dowolną liczbę ról. Wobec tego zrobiłem 3 tabele:
- Users (Id, Name, e-mail... (i więcej kolumn))) . Id jest PK
- Roles (Id, Name). Id jest PK
- UserRoles (UserId, RoleId). Relacja wiele do wielu.
Wszystko ładnie działa. Ale trzeba dodać jeszcze jedną funkcjonalność - użytkownik może używać w danym czasie tylko jednej roli - spośród swoich ról - ta rola oczywiście musi być pamiętana w bazie.
Stworzyłem więc na razie taką tabelę:
- UserCurrentRoles (UserId, RoleId) .
UserId jest tu kluczem główny, unikatowy - bo użytkownik ma tylko jedną rolę "bieżącą". Ale chyba taki model bazy nie ma sensu - bo jak ktoś usunie/zmieni tabelę UserRoles, to będą konflikty w UserCurrentRoles. Wiem, że można dodać triggery - ale czy nie da się tego lepiej zaprojektować?
Jak zmienić te strukturę aby można było uzyskać to co opisałem? Z góry dzięki za pomoc.</i>