The practice of using Id as primary key field leads to the practice where id gets added to every table. A lot of tables already have unique information that uniquely identifies a record. Use THAT as primary key and not an id field you add to each and every table. That's one of the foundations of relational databases.
And that's why using id is bad practice: id is often not information just an autoincrease.
consider the following tables:
PK id | Countryid | Countryname 1 | 840 | United States 2 | 528 | the Netherlands What's wrong with this table is that it enables the user to add another line: United States, with countrycode 840. It just broke relational integrity. Ofcourse you can enforce uniqueness on individual columns, or you could just use a primary key that's already available:
PK Countryid | Countryname 840 | United States 528 | the Netherlands That way you use the information you already have as primary key, which is at the heart of relational database design.