Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prawidłowe dobieranie typu dla kolumn
wujek2009
post
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ę:
  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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
BaN
post
Post #2





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Crozin
post
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 09:10