Mam pytanie,
Posiadam taką przykładową strukturę tabel (relacja wiele do wielu):
CREATE TABLE User (
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(50) NULL,
LastName VARCHAR(50) NULL,
Email VARCHAR(50) NULL,
Password VARCHAR(130) NULL
);
/* TABELA ROLE */
CREATE TABLE Role(
RoleId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
RoleName VARCHAR(30) NULL
);
/* TABELA DO POWIAZANIA - USER z ROLE */
CREATE TABLE UserRole(
UserId int,
RoleId int,
FOREIGN KEY(UserId) references User(UserId) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(RoleId) references Role(RoleId) ON DELETE CASCADE ON UPDATE CASCADE
);
Mam taką sytuację:
Poprzez formularz rejestracyjny użytkownik podaje wszystkie dane z tabeli "user" (FirstName, LastName, Email, Password) oraz określa swoją rolę (czyli de facto podaje "RoleName" z tabeli "Role"). I teraz mam takie pytanie, jak powinien wyglądać (od strony teoretycznej) zapis tych danych do bazy?
Poniżej podaje jak ja to widze ale chciałem sie poradzić kogoś bardziej doświadczonego:
1. Zapisuję pierw "FirstName, LastName, Email, Password" do tabeli "User",
2. Po tym zapisie pobieram SELECTem "UserId" tego dodanego przed chwila użytkownika, (do wykorzystania w punkcie 4)
3. Nastepnie sprawdzam podane "RoleName" z istniejącymi rolami w tabeli "Role" i pobieram ich "RoleId"
4. Używając INSERT INTO wstawiam odpowiednie pary zawierające "UserId" użytkownika z odpowiednim "RoleId" do tabeli "UserRole"
Byłbym wdzięczny za podpowiedzenie jak to sie poprawnie powinno robić, czy można tę operację jakoś uprościć i czy struktura tabel jest odpowiednia?