![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 1 Dołączył: 16.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam pewien problem. Otoż, załóżmy, że mam dwie tabele: dane_autentykacyjne: id_da (PK), login, haslo, rola uzytkownicy: id_uzytkownik(PK), da_id(FK), imie, nazwisko, ulica, miasto, nr domu etc (sporo tego) tylko jedna rola: klienci ma wpisy w tabeli uzytkownicy, o użytkonikach z innymi rolami (admin, sprzedawca etc) przechowujemy tylko dane w tabeli dane_autentykacyjne. Tak więc tabela uzytkownicy jest niepotrzebna dla wszystkich oprócz jednej ról. Czy da się to jakoś ładniej zmontować, bez NULLI? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Ja się zastanawiam nad jednym... Skoro robisz podział danych w ten sposób, to czy id_uzytkownik(PK), da_id(FK) nie są identyczne? No chyba że dopuszczasz by wielu userów łączyło się za pomocą tych samych danych lub jeden użytkownik miał wiele różnych ról i każda z nich inny login i hasło. To raz. A pytanie inne to po co cokolwiek zmieniać jeszcze? Zwyczajnie zakładasz ten rekord w tabeli użytkownicy tylko gdy ktoś jest klientem. A to przecież właśnie dobra droga i prawidłowa. Robisz normalnie JOINy jak chcesz, a jeśli już po stronie skryptu wykryjesz, że ktoś nie jest klientem, to wiesz, że i tak w ewentualnych dodatkowych kolumnach napotkasz nulle. Twoje podejście (poza zdublowanymi kluczami, o czym wspomniałem) jest jednak jak najbardziej poprawne i nie unikniesz nulli w kolumnach które nie istnieją. Możesz jedynie próbować je "ukryć" poprzez IFNULL i wpisywanie wtedy pustego stringa czy innej wartości gdzie trzeba, bądż IF i uzupełnienie kolumn, ale nie widzę sensu tego zbytnio.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 15:07 |