![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 6.12.2016 Ostrzeżenie: (0%) ![]() ![]() |
Robię w bazie mysql tabelę z użytkownikami w którą użytkownik będzie mógł za pomocą formularza na stronie wpisać mnóstwo danych typu:
adres profili społecznościowych, email, adres strony www, wiek, telefon, płeć, miasto, zainteresowania, itp. razem powiedzmy 40-50 pól z możliwością wypełnienia. Pola nie byłyby obowiązkowe tylko dobrowolnie wypełniane, więc prawdopodobnie byłoby pusto w wielu kolumnach. Jak do tego zagadnienia podejść? Czy jest sens tworzyć jedną tabelę users z kolumną dla każdego pola, jeśli większość pól będzie prawdopodobnie pustych, czy lepiej w tym przypadku stworzyć tabelę users z danymi podstawowymi id,user_name,password,email drugą tabelę na przykład users_data z polami id,user_id|meta_name|meta_value powiązać je? W tabeli users_data trzymać dane użytkownika w takiej postaci:
Albo jeszcze inaczej tabela users_data zawierała by tylko pola id,user_id,user_data i w kolumnie user_id trzymałbym id użytkownika z tabeli users, a w user_data trzymałbym zserializowane dane użytkownika wpisane w formularzu. Jak takie dane najlepiej przechowywać w bazie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
To zależy co będziesz z tymi danymi robił. Jeśli nic i tylko wyświetlał je w profilu to dodatkowa 1 kolumna na json z danymi będzie spoko, jak będziesz szukał coś po tych polach to 2-gie rozwiązanie z meta
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 6.12.2016 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, tak zrobię to co będę chciał wyszukiwać, wrzucę w meta reszta w kolumnę JSON (IMG:style_emoticons/default/smile.gif) Edycję danych z tej kolumny json będę mógł wykonać bez problemu poprzez pola formularza? Dane z $_POST do arraya, array do jsona i fru do tabeli w bazie?
Jeśli chciałbym aby pewne dane usera mogły być edytowane / wyświetlane tylko jeśli posiada on rangę 'Premium' to dane "premium" wrzucić w oddzielną tabelę i mieć 3 tabele użytkowników 'users', 'users_data_basic', i 'users_data_premium' to będzie dobre rozwiązanie? Jeszcze jedno pytanie. Jeśli dane będę trzymał w postaci zserializowanej w bazie to jaki typ danych wybrać dla kolumny z tymi danymi? TEXT wystarczy, czy coś innego? Wyszukiwania po danych zawartych w tych tabelach nie planuje. Ten post edytował arturpiotrowski 23.10.2017, 21:11:11 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zawsze możesz w ramach struktury JSON wyodrębnić gałęzie 'regular' i 'premium'
Pobierasz z BD JSON, robisz decode, budujesz Form, a po wysłaniu postem znowu budujesz z tego JSON na podstawie tablicy i pakujesz do BD. Text powinno być ok. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 02:09 |