jak zaprojektować tabelkę

pyt Q

Cześć,
Mam tabelkę z klientami, których chcę łączyć w grupy (grupa może zawierać kilku klientów). Jest możliwość dodawania nowych grup (ale grupa zawiera jedynie numer i nic więcej!).
Czy powinienem stworzyć tabelkę JoinClientGroup, która będzie zawierała pola: id - klucz na tabelkę JoinClientGroup. clientId - relacja do tabelki client groupId - relacja do tabelki Group (która ma tylko klucz autoinkrementujący i nic więcej)
Czy zrobić pole groupId jako zwykłe pole i przy wstawianiu nowej grupy sprawdzać jaki jest aktualnie największa wartość i wstawić o jeden więcej ?
(nie znam się za bardzo, ale boję się sprawdzać jaki jest max i wstawiać o jeden więcej, bo nie wiem czy to jest bezpieczne, czy pomiędzy sprawdzeniem, a wstawieniem rekordu, przez tę krótką chwilę może zostać wstawiona już taka wartość..)
Dzięki za rady

odp A

Cześć,
Czy zrobić pole groupId jako zwykłe pole i przy wstawianiu nowej grupy sprawdzać jaki jest aktualnie największa wartość i wstawić o jeden więcej ?
(nie znam się za bardzo, ale boję się sprawdzać jaki jest max i wstawiać o jeden więcej, bo nie wiem czy to jest bezpieczne, czy pomiędzy sprawdzeniem, a wstawieniem rekordu, przez tę krótką chwilę może zostać wstawiona już taka wartość..)
Dzięki za rady
imbirek8 pisze:

Witam,
> Czy powinienem stworzyć tabelkę JoinClientGroup, która będzie zawierała > pola: > id - klucz na tabelkę JoinClientGroup. > clientId - relacja do tabelki client > groupId - relacja do tabelki Group (która ma tylko klucz > autoinkrementujący i nic więcej)
Idziesz dobrym tropem, 3 tabele
I tabela - Klient id_klienta (PK,utoinkrementacja) II tabela - Grupa id_grupy (PK, autoinkrementacja)
III tabela - KlientGrupa (bedzie laczyc wspomniane powyzej tabele) id_KlientGrupa - klucz tabeli (PK, autoinkrement, ale moze byc rowniez bez tego id/pola) klient_id - FK, klucz obcy do tabeli Klient grupa_id - FK, klucz obcy do tabeli Grupa
Nie sprawdzasz zadnego max poprostu wstawiasz/łączysz w tabeli III KlientGrupa tylko takie rekordy, ktore istnieja w tabelach Klient i Grupa.
Poczytaj o więzach integralności w BD.
Pozdrawiam,

Dodaj odpowiedź

Tytuł:

Mail: (w celu weryfikacji posta)