![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 350 Pomógł: 31 Dołączył: 23.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
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ę:
Czyli w przypadku braku wartości, ustawi się '' - czy jest to lepsze rozwiązanie od NULL? W jakich przypadkach powinno wstawiać się NULL? Pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cześć. Witam 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ł 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ę:
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 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował Crozin 24.10.2010, 12:31:35 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 09:10 |