Does a Key-Value type table still needs a auto increment key? Suppose that I have a very simple table to store variable-like data, like this:

+-----------+-----------------+
|    key    |      value      |
+-----------+-----------------+
| site_url  | helloworld.com  |
| site_name | Hello World     |
| time_zone | Asia Taipei     |
+-----------+-----------------+

Do I still need to create a ID column?
or just simply set key column as primary key
(key would be unique
Always start by identifying your natural keys, in this case key. If these are too complex (too many columns) or not stable enough (changes to often), consider adding a surrogate key (such as the ID column you mention). The criteria I use for keys are:

- unique
- stable
- irreducible
- complexity
- familiarity 


In many situations there will be a conflict between these criteria, and one have to compromise. There is nothing wrong with adding a surrogate key under certain circumstances, but sadly many people design by auto-pilot and blindly add surrogate keys no matter what.