Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zaprojektowanie tabeli użytkowników
CzarnyGsm
post 21.09.2011, 16:48:12
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 2
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


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 ;
Go to the top of the page
+Quote Post
phpowiec84
post 23.09.2011, 11:03:29
Post #2





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 10.12.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 01:37