![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam pytanie dotyczące teorii tworzenia serwisów internetowych. Czy powinno się dzielić dane użytnowników na profile i konta? Były by one reprezentowane przez dwie osobne tabele. Tabela konta przechowywała by jedynie e-mail, hasło i ew, jakies tokeny, czy pytania dotyczące odzyskania hasła - mówiąc krócej - podstawowe dane zebrane podczas rejestracji. W drugiej znajdowały by się inne informacje, jak imie, nazwisko, płeć, data urodzenia, link do avataru. Co sądzisz o takim podziale? Jak Ty to robisz? Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 273 Pomógł: 21 Dołączył: 28.11.2010 Ostrzeżenie: (10%) ![]() ![]() |
Ale po co coś takiego? Nie widzę w ogóle sensu w tym co napisałeś. Jedna tabela, w której trzymasz wszystko co dotyczy użytkownika, w zupełności wystarczy. Przynajmniej ja tak uważam.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
można podzielić, ale nie w taki sposób co opisałeś, to zależy od przypadku, jeżeli masz bardzo dużo kolumn to możesz je logicznie podzielić na tabele, ale jeżeli masz tylko login, hasło, e-mail, imie, nazwisko, płeć, data urodzenia, link do avataru to trzymaj w jednej
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
No tak, ale wszyscy chyba zapomnieli o tabeli properties:
USERS: ID, nick... PROPERTIES user, property, value kuma? ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Erix... To jest fajne rozwiązanie z dynamicznie zmienianą userowi liczba zajętych kolumn (brak nulli i innych śmieci) w przypadku posiadania ich dużej ilości, ale niesie z soba problemy natury wielokrotnego UPDATE, gdyż modyfikacja kilku rzeczy wymaga kilku zapytań tego typu zamiast jednego. Oba rozwiązania są dobre, ale zależne od przypadku. Raz lepiej zastosować jedno, innym razem drugie. Ogólnie podział na profil, users czy inne tabele (tzw. partycjonowanie pionowe) jest dobre gdy masz wiele kolumn i chcesz to logicznie podzielić na bloki danych funkcjonalnych. Z małą ilością kolumn wydzielanie specjalnie tylko po to by wydzielić -> sztuka dla sztuki. jest wiele rzeczy, które powinno się robić, ale z pewnych względów nie zawsze ma to sens. Podział o którym mówisz jest tu dobrym przykładem. Mogą zajść bowiem różne przypadki
1) Mała liczba kolumn w users - nie ma sensu dzielić 2) Mała liczba, ale wiele kolumn jest pustych - można zastosować properties podane przez erixa 3) Większa liczba kolumn - można wydzielić bloki funkcjonalne. Osobno dane firmy, osobno profil czy dane kontaktowe. To czy wydzielone to będzie do osobnej tabeli jako 1 rekord (jak proponujesz) czy jako osobne właściwości (erix) jest już zależne od tego co chcesz robić z nimi. Może być tak, że zastosujesz dla jednej tabeli rozwiązanie swoje, a dla innej erixa. Nic temu nie przeszkadza. Zależy od przeznaczenia, częstotliwości odczytów i zapisów do bazy, możliwej rozszerzalności tabeli (dodanie kolumny dla wszystkich vs dodanie po prostu rekordu userowi o danej nazwie i wartości dla properties ). Tu konieczna jest analiza zachowania się systemu. -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 5.07.2025 - 05:44 |