Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] jaka struktura bazy danych?
Forum PHP.pl > Forum > Bazy danych > MySQL
wiciu010
Chcę zrobić stronkę gdzie każdy użytkownik może się zarejestrować podając login i hasło. Wszystko będzie zapisywane do bazy MySQL do tabeli "users", gdzie będą pola id (kolejne liczby całkowite dla każdego użytkownika) login, hasło.
Każdy użytkownik będzie mógł w swoim profilu podawać takie dane jak:
-tytuł książki
-data przeczytania (np. 29.10.2007)
-gdzie kupiona

Czy te dane również zapisywać do tabeli users czy może jakiejś innej? Każdy użytkownik może podać po kilka tytułów itd. Jak powinna wyglądać struktura takiej bazy danych?
Chrom
absolutnie do innej rozbij na tabele np. users oraz przeczytane
wiciu010
OK. Czyli mam dwie tabele users, z danymi z rejestracji i "przeczytane" z pozostałymi danymi, ale jak je powiązać ze sobą? Tzn. że zalogowany użytkownik będzie dodawał kolejne dane i odczytywał je?
Chrom
pewnie koledzy cos poprawią ale ja bym zrobił np tak
  1. CREATE TABLE `przeczytane` (
  2. `id_przeczytane` int(8) NOT NULL,
  3. `login` varchar(25) NOT NULL,
  4. `tytul` varchar(30) NOT NULL,
  5. `data` varchar(15) NOT NULL,
  6. `gdzie` varchar(20) NOT NULL
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
  8.  
  9. CREATE TABLE `users` (
  10. `id` int(8) NOT NULL AUTO_INCREMENT,
  11. `login` varchar(25) NOT NULL,
  12. `haslo` varchar(32) NOT NULL,
  13. PRIMARY KEY (`id`)
  14. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;
prgTW
  1. CREATE TABLE `przeczytane` (
  2. `id_przeczytane` int(8) UNSIGNED NOT NULL,
  3. `id_usera` int(8) UNSIGNED NOT NULL,
  4. `tytul` varchar(30) NOT NULL,
  5. `data` int(8) UNSIGNED NOT NULL,
  6. `gdzie` varchar(20) NOT NULL,
  7.  
  8. PRIMARY KEY (`id_przeczytane`)
  9. )
  10.  
  11. CREATE TABLE `users` (
  12. `id` int(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  13. `login` varchar(25) NOT NULL,
  14. `haslo` varchar(40) NOT NULL,
  15.  
  16. PRIMARY KEY (`id`),
  17. UNIQUE KEY (`login`)
  18. )


przeczytane:
- id_usera (bo zlaczenia robi sie przez klucze w tabelach!
- data = int(8) - latwiej do wykorzystania z php (jako date ustawiasz wynik funkcji time(), formatowaniem zajmue sie html a nie baza)

- users:
- haslo = varchar(40) a nie varchar(32) - silniejsze hashowanie: sha1 zamiast md5, w bazie trzymaj hasla w formie hashowanej, a nie hasla uzytkownikow! przy logowaniu hashuj haslo ktore wpisze uzytkownik i porownuj z hashami w bazie.

dla szybkosci dzialania dodaj indeksy na id_usera (tabela przeczytane) i haslo (tabela userzy) - ale to tylko przy duzej liczbie wierszy w jednej lub drugiej tabeli, bo inaczej nie ma sensu zabierac miejsca na dysku, bo selecty i tak szybko sie beda wykonywac.
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.