Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zaprojektowanie tabeli użytkowników
Forum PHP.pl > Forum > Bazy danych > MySQL
CzarnyGsm
Witam serdecznie,

Zastanawiam się jak powinna dobrze być zaprojektowana tabela użytkowników. Gdy ktoś posiada bazę danych z użytkownikami rzędu 300 tysiącami rekordów to zależy na tym, aby to wszystko miało jak najmniejszą pojemność, energooszczędność. Poniżej prezentuję moją bazę danych i mam do niej kilka pytań.
W serwisie użytkownik musi aktywować konto, czy lepiej jest, aby utworzyć oddzielną tabelę o nazwie "aktywacja", która zawierałaby trzy pola 'id_uzytkownika' int(11), 'kod' varchar(6) oraz 'czy_aktywowano' tinyint(1). Odpowiednio po rejestracji użytkownika generowany byłby rekord w tabeli z odpowiednim id użytkownika, kodem oraz czy rekord był używany. Odpowiednio po otrzymaniu e-mail'a i kliknięciu przez użytkownika w wygenerowany odnośnik rekord byłby usuwany z takiej tabeli, a w tabeli 'uzytkownicy' w polu 'status' pojawiłaby się cyfra 1 (oznaczająca aktywne konto). Czy takie rozwiązanie jest dobre, a może znacie inne, lepsze? Kolejne pytanie to, czy tworzyć nowe pole w tabeli 'uzytkownicy' o nazwie 'avatar', która zawiera ścieżkę do grafiki, czy lepiej nową tabelę? Z góry dziękuję za pomoc.
  1. CREATE TABLE IF NOT EXISTS `uzytkownicy` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(50) COLLATE utf8_polish_ci NOT NULL,
  4. `email` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  5. `haslo` varchar(50) COLLATE utf8_polish_ci NOT NULL,
  6. `kod` varchar(6) COLLATE utf8_polish_ci NOT NULL,
  7. `data_rejestracji` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  8. `ostatnie_logowanie` timestamp NULL DEFAULT NULL,
  9. `rola` varchar(5) COLLATE utf8_polish_ci NOT NULL,
  10. `status` tinyint(1) NOT NULL DEFAULT '0',
  11. PRIMARY KEY (`id`),
  12. UNIQUE KEY `email` (`email`)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=40 ;
phpowiec84
zostawiłbym dane w jednej tabeli ,a kolumna z kluczem do aktywacji nazwałbym hash (można ją wykorzystać np przy logowaniu po aktywacji konta ,do hashowania danych z sesji czy hasła użytkwonika)
po za tym pozostaje jeszcze kwestia właściwych kluczy dla tabeli
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.