Well, I use one scheme all the time and find it very useful.
The primary key in the table is always called "ID", with splittet keys. I call the column with information about the row identifier "ID", otherwise the column "ID" is not called.
All foreign keys use the name of the table to which they refer.
CREATE TABLE `Person` ( `ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, `FirstName` VARCHAR(255) NOT NULL, `LastName` VARCHAR(255) NOT NULL, PRIMARY KEY (`ID`) ); CREATE TABLE `Tutorial` ( `ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `Name` VARCHAR(255) NOT NULL, PRIMARY KEY (`ID`) ); CREATE TABLE `Class` ( `Person` INTEGER UNSIGNED NOT NULL, `Tutorial` INTEGER UNSIGNED NOT NULL PRIMARY KEY (`Person`, `Tutorial`) );
source share