Last week I was delivering our IS.NET training course. I was lucky enough to have Andrew Coates from Microsoft taking the course. As Andrew mentioned, on the second last day I brought up the subject of identity in relational databases.

I going to make a more lengthy post down the track, but I totally advocate artificial keys for maintaining referenial integrity inside the database. Externally I like to have some kind of unique identifier which might make some kind of sense to a human, this includes both human interfaces (web/windows) and machine interfaces (web services).

The fact that Andrew went away thinking that I am a strong advocate for natural keys for referential integrity probably means I overplayed the devils advocate role a little bit :)

On the subject of SQL, I did mention this. My point was that I am really looking for a set based language that is a more natural fit for me. Once again I'll make a more lenghty post down the track about this but if you do some googling there has been a lot of discussion about this. When it comes down to syntax (as opposed to a position about set based languages) it can get religious but it really comes down to personal preference. Why do some people prefer VB.NET over C# or vice versa?