I am quite good with php, and have made some cool apps, however, I have always made an id/auto-increment/unsigned/notnull/primary key field to start with all my tables just as a habit, and ive used that field before, but is it necessary? And, do I need a primary key? what does defining a field as primary actually do? Also, I know what happens when you make a field unique, but what is index?
Auto-Increment is almost always needed, to make each data row unique.
Not always needed, but it's a very convenient way of getting unique values.
If you have a table containing names, for example, people can have same name, same address etc, i.e. could be really difficult to find the property that is different (OK, date of birth can be used...).