Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Wiele danych, struktura tabeli
Forum PHP.pl > Forum > Przedszkole
arturpiotrowski
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:
  1. id|user_id|meta_name|meta_value
  2. 1|58|facebook_url|https://facebook.com/jan.kowalski88547
  3. 2|58|adres|Warszawa, ul. Jasia Fasoli 8
  4. 3|58|gadu-gadu|123456789

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?
Pyton_000
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
arturpiotrowski
Dzięki, tak zrobię to co będę chciał wyszukiwać, wrzucę w meta reszta w kolumnę JSON 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.
Pyton_000
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.
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.