UNSIGNED ranges from 0 to n, while signed ranges from about -n/2 to n/2.
In this case, you have an AUTO_INCREMENT ID column, so you would not have negatives. Thus, use UNSIGNED. If you do not use UNSIGNED for the AUTO_INCREMENT column, your maximum possible value will be half as high (and the negative half of the value range would go unused).
Basically with UNSIGNED, you're giving yourself twice as much space for the integer since you explicitly specify you don't need negative numbers (usually because values you store will never be negative).
I think, UNSIGNED would be the best option to store something like time_duration(Eg: resolved_call_time = resolved_time(DateTime)-creation_time(DateTime)) value in minutes or hours or seconds format which will definitely be a non-negative number
One thing i would like to add
In a signed int, which is the default value in mysql , 1 bit will be used to represent sign. -1 for negative and 0 for positive.
So if your application insert only positive value it should better specify unsigned.
The true is that first bit is used for represent the sign. But 1 is for negative and 0 is for positive values. More over negative values are coded in different way (two's complement). Example with TINYINT:
If you know the type of numbers you are going to store, your can choose accordingly.
In this case your have 'id' which can never be negative. So you can use unsigned int.
Range of signed int: -n/2 to +n/2
Range of unsigned int: 0 to n
So you have twice the number of positive numbers available.
Choose accordingly.
For negative integer value, SIGNED is used and for non-negative integer value, UNSIGNED is used. It always suggested to use UNSIGNED for id as a PRIMARY KEY.
If you wanna keep it simply, then you have to keep in mind if you want to calculate with these numbers as well (subtraction). If you for example calculate A - B and B is bigger than A, you can get in trouble. There you would have to CAST the SIGNED number to a UNSIGNED.