Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%)
|
Mam pewnien element do zaprogramowania. Przypuśćmy, ze mam tabelę m_users
Kod +---------------------+-------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------------+-------------------+------+-----+---------+----------------+ | id | int(12) | NO | PRI | NULL | auto_increment | | login | char(32) | NO | | NULL | | | password | char(32) | NO | | NULL | | | email | char(32) | YES | | NULL | | +---------------------+-------------------+------+-----+---------+----------------+ Teraz chciałbym ją dowolnie rozszerzać. Tak aby każdy użytkownik mógł mieć różne dodatkowe pola np. Kod +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | name | char(20) | YES | | NULL | | | type | char(20) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ Gdzie name to nazwa pola(np "gadugadu") a type to jego typ(np "int(10)") Teraz w 3 tabeli trzymałbym wartości. I tu jest problem ponieważ nie mogę stworzyć tabeli nie wiedząc jakiego rodzaju pola będą się w niej znajdować. Wymyśliłem, że stworzę sobie 5 tabel (jedna wartości int, drugą wartości date, trzecią wartości char, czwartą wartości text i piątą wartości boolean). Dam ROW_FORMAT=DYNAMIC Aby zoptymalizować trochę ilość zajmowanego przez nie miejsca i powinno działać. Następnie stworzę widok i będe mógł tworzyć zapytania w stylu.
Pytanie tylko. Czy to jest dobre rozwiązanie? Może polecicie coś lepszego zanim zasiąde do kodowania (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Cytat Pytanie tylko. Czy to jest dobre rozwiązanie? Może polecicie coś lepszego zanim zasiąde do kodowania ? Złe rozwiązanie. Struktury tabeli staraj się nie ruszać, gdyż przy większej ilości rekordów zajmie dużo czasu. Zrób tabelę, która będzie przechowywać pola ID, userID, property, value. Value zapisuj jako np. varchar, a wyciąganie konkretnego typu możesz przecież zrealizować przez cast. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Wg mnie tak by było najlepiej, choć mogę się mylić. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%)
|
Dzięki wielkie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Szczerze mówiąc nie wiedziałem o CAST(). Znacznie mi to ułatwi pracę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
|
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 13:21 |