You pretty much have it correct. If no data lends itself to being a natural key (i.e. nothing int the data is unique across rows) a surrogate key needs to be supplied.
If you created a id column using [int auto_increment primary key] then you have a surrogate key because, although the column uniqiuely identifies each row, it has no real world realtionship with the data.
Using unique 'business' data means you are using a natural key e.g. social security numbers in a payroll database