When teams of enterprise software developers are cloistered away from the real world for long enough, an attitude of monasticism prevails. The fragile and fleeting concerns of mortal time fall away, and the developer's mind awakens to the greater, eternal truths that wait unsullied in everlasting Empyrean majesty. Into such a team Cory came, and, under the rigorous guidance of Brother Architect, he learned that only adherence to the Database Schema Commandments could free his soul to bask in the light of the divine.

And, lo, the First Commandment was: Thou shalt name each table having a foreign-key relationship with another table such that the name of the table having the primary key is included in the related table's name.

Since Brother Architect acknowledged that verily the wording of the First Commandment left it open to heretical interpretation, he provided, in his wisdom, the following example tables:

CountryTable
AddressTable
AddressCountryTable -- Foreign keys to AddressTable and CountryTable

And, lo, the Second Commandment was: Thou shalt name each stored procedure whose purpose is to retrieve a particular relation such that the name of the procedure includes both the name of the relation being retrieved and the name of the field or fields used to retrieve it.

Knowing the minds of his fellow monks were still benighted by the manifold temptations of the flesh, Brother Architect provided this clarifying example:

GetAddressCountryByPostcode

Suffused with the wisdom of the Database Schema Commandments, Cory went forth, with Brother Architect's blessing, to make a change to the Controls Automation database. Having completed this work, Cory sinfully amused himself by searching the database for the object with the longest name. Pray pardon him his weakness, friend, and look mirthfully upon his best finding thus far:

GetAutomationExportAutomationExportFieldLUByAutomationExportID

And there was evening, and there was morning—the third normal form.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!