Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prawidłowe dobieranie typu dla kolumn
Forum PHP.pl > Forum > Bazy danych > MySQL
wujek2009
Cześć.

Chciałbym rozpocząć dyskusję na temat odpowiedniego doboru typu dla określonej kolumny.
Otóż tworze tabele użytkowników i zastanawiam się nad doborem typu dla "id_user" - Wiadome, aby było unsigned + AUTO_INCREMENT, ale dokładnie zastanawia mnie jaki typ dać?

http://dev.mysql.com/doc/refman/5.0/en/num....html#id1609251
Według tej tabeli, samo SMALLINT (do: 65535) wystarczyłoby mi, ale czy jeśli uda mi się przekroczyć "barierę" 65535 użytkowników to będę mógł zmienić typ z SMALLINT na MEDIUMINT bez żadnych problemów z poprzednimi zarejestrowanymi kontami?

Oraz dołączę drugie pytanie - również związane z tabelą użytkowników. Załóżmy, że mamy kolumnę "zainteresowania" - z doświadczenia wiem, że rzadko go uzupełnia takie pole, ale mimo to chciałbym mieć tą opcje u siebie w serwisie.
I teraz jak ktoś nie uzupełni w/w pola, to ustawiać wartość NULL czy '' ?

Większość skryptów tak prezentuje taką kolumnę:
  1. `zainteresowania` varchar(150) NOT NULL DEFAULT '',


Czyli w przypadku braku wartości, ustawi się '' - czy jest to lepsze rozwiązanie od NULL? W jakich przypadkach powinno wstawiać się NULL?

Pozdrawiam.
BaN
Cytat(wujek2009 @ 24.10.2010, 09:39:12 ) *
Cześć.

Witam

Cytat(wujek2009 @ 24.10.2010, 09:39:12 ) *
Chciałbym rozpocząć dyskusję na temat odpowiedniego doboru typu dla określonej kolumny.
Otóż tworze tabele użytkowników i zastanawiam się nad doborem typu dla "id_user" - Wiadome, aby było unsigned + AUTO_INCREMENT, ale dokładnie zastanawia mnie jaki typ dać?

http://dev.mysql.com/doc/refman/5.0/en/num....html#id1609251
Według tej tabeli, samo SMALLINT (do: 65535) wystarczyłoby mi, ale czy jeśli uda mi się przekroczyć "barierę" 65535 użytkowników to będę mógł zmienić typ z SMALLINT na MEDIUMINT bez żadnych problemów z poprzednimi zarejestrowanymi kontami?

Będziesz mógł zmienić. Odnośnie problemów, to nie będziesz miał przy zmianie, musisz tylko jeszcze pozmieniać odpowiednie typy w innych tabelach, które wykorzystują identyfikator użytkownika, o ile takie tabele będziesz miał

Cytat(wujek2009 @ 24.10.2010, 09:39:12 ) *
Oraz dołączę drugie pytanie - również związane z tabelą użytkowników. Załóżmy, że mamy kolumnę "zainteresowania" - z doświadczenia wiem, że rzadko go uzupełnia takie pole, ale mimo to chciałbym mieć tą opcje u siebie w serwisie.
I teraz jak ktoś nie uzupełni w/w pola, to ustawiać wartość NULL czy '' ?

Większość skryptów tak prezentuje taką kolumnę:
  1. `zainteresowania` varchar(150) NOT NULL DEFAULT '',


Czyli w przypadku braku wartości, ustawi się '' - czy jest to lepsze rozwiązanie od NULL? W jakich przypadkach powinno wstawiać się NULL?

Ogólnie NULL oznacza nieznaną wartość, brak danych, może oznaczać jakiś dodatkowy stan

W Twoim wypadku prawie obojętne, ja bym ustawił na ''. Nie trzeba wtedy sprawdzać przy zapisie oraz uaktualnianiu czy podano napis pusty i ustawiać wtedy wartość na NULL

Trochę naciągany przykład: gdybyś miał np. dwa formularze, w jednym występuje to pole a w drugim nie, a chcemy mieć informację z jakiego formularza dane były wpisywane, to zamiast dodawać kolejne pole do tabeli, które oznacza z jakiego formularza dane były wpisywane można przyjąć, że NULL oznacza, że dane zostały zapisane z formularza gdzie nie ma tego pola
Crozin
Wykorzystanie SMALLINT zamiast INT pozwoli Ci jedynie na zaoszczędzenie jakiś 100 KiB na każde 50 000 użytkowników. Różnicy w wydajności nie powinno być żadnej.

Co do NULL vs "". Jeżeli dana wartość jest nie podana/niezidentyfikowana powinieneś wstawić NULL, ponieważ on oznacza właśnie taki stan.
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.