Muszę wdrożyć podstawowe spersonalizowane funkcje użytkownika dla mojej witryny. Czy istnieje standardowa struktura baz danych tego typu? Podobnie jak w przypadku powszechnej praktyki, aby wszystkie informacje o użytkowniku i dane znajdowały się w jednej tabeli, przy czym każdy użytkownik ma własny wiersz, czy też informacje te powinny być dzielone między różne tabele i łączone ze sobą (może ze względu na wydajność?) Nie martwię się o bezpieczeństwo w tym momencie, ale oczywiście będę chciał mieć szyfrowanie hasła zbyt długo.
Próbowałem znaleźć to, czego szukałem w Google, ale bezskutecznie. Daj mi znać, jeśli pytanie wymaga dalszego wyjaśnienia lub czegoś innego.
źródło
Będę musiał wybrać wielką starą modę „to zależy”.
Oczywiście będziesz potrzebować jakiegoś klucza do tego stołu. Możesz zacząć od ID użytkownika. Może to być po prostu rosnąca INT (lub bigint, jeśli zamierzasz mieć ponad 2,1 miliona użytkowników).
Widziałem, że wiele baz danych używa również identyfikatorów GUID jako głównego identyfikatora użytkownika. Ale to otwiera zupełnie inną puszkę robaków korzystających z GUID dla PK.
Następnie musisz zdecydować, jak znormalizowana ma być twoja baza danych. Czy pozwolisz, aby użytkownik miał wiele e-maili? wiele numerów telefonów? Jeśli tak, powinny znajdować się w innej tabeli.
Zachowałbym główną tabelę użytkowników, aby:
To powinien być twój punkt wyjścia.
Stamtąd możesz dodać inne kolumny na podstawie tego, co chcesz przechowywać. E-mail może prowadzić do tabeli e-mail, adresu do tabeli adresów itp. Hasło może używać skrótu + soli, ale czy rozważałeś openids?
WYSOKIE zalecam przeczytanie tego artykułu - http://www.sqlservercentral.com/articles/data-modeling/71725/
źródło
Jeśli chodzi o uwierzytelnianie użytkowników, użyłbym LDAP. Nie twórz osobnej bazy danych dla użytkowników, jeśli już korzystasz z bazy danych i masz inne tabele (zamówienia, produkty itp.). Możesz dołączyć do tych tabel.
źródło