Definiowanie typów danych przy tworzeniu - podstawy

0

Robie pierwszą prostą bazę w mysql i nie jestem pewien ja definiować dane liczbowe int, tinyint, i mediumint bo tu trzeba dodatkowo podać długość tej liczy. Czy aby maksymalnie wykorzystać warości tych typów odpowiednie długości to int(11), mediumint(8), tinyint(3) ?
Druga sprawa to definiowanie głównego klucza id. U mnie jest to mediumint i maja być tylko plusowe wartości więc wydaje mi sie że powinienem dopisać parametr UNSIGNED ale nie widziałem wielu takich przykładów z tą opcją więc nie wiem czy dla klucza sie to definiuje.

0

wartość w nawiasie określa tylko ilość cyfr przy wyświetlaniu z użyciem ZEROFILL, nie zmienia możliwego zakresu wartości - te wartości, które podałeś określają ilość cyfr maksymalnej liczby jaka może być w tym typie przechowywana

unsigned większość ludzi po prostu ma w dupie - nie zmienia to wiele
po prostu zamiast mieć pulę liczb na plusie mają tę dodatkową pulę na minusie

dodanie unsigned żeby podwoić liczbę możliwych dodatnich rekordów przed niczym nie uchroni
jeżeli na stronie wykonano te 2 miliardy operacji (int) to zapewne niewiele czasu minie zanim licznik dobije do 4 miliardów (unsigned int) bo popularność strony zazwyczaj rośnie wykładniczo
tak więc jeżeli 2 miliardy identyfikatorów nie wystarcza to lepiej dołożyć dodatkowe bity do tego pola i zmienić zakres danych na bigint żeby mieć spokój na dłużej niż parę dni

pominięcie unsigned może mieć za to dużą zaletę - jeżeli operacji naprawdę będzie na tyle dużo że nastąpi przepełnienie, to bazę danych zaczną zalewać identyfikatory o wartości ujemnej, które mogą zostać łatwo zauważone i mogą być lampką ostrzegawczą dla właścicieli żeby zdążyć zwiększyć wielkość tego pola przed ostatecznym wysypaniem się bazy danych

0

THX : )

Dla pewności, niepodanie tej liczby w nawiasie przy typie liczbowym (np. int(11)) podczas definiowanie tabeli nie będzie w żaden sposób negatywnie wpływało na bazę i je wydajność?

1 użytkowników online, w tym zalogowanych: 0, gości: 1