I must strangle someone.
I must grab someone by the throat and squeeze their neck so hard inside my steely grip that their blood supply is stopped, and their brain starves and gets dead. I need to pick up a hammer and smash someone across the face with it. The next person I see, they're gonna cop it.... and when they ask me why I did it, when the judges and the juries get out their pencils and prepare to take notes on the mind of a madman, a killer -- I will point to the system I am migrating data out of... I will point to this system, 'LOOK!' I will say. I will show them how this system worked, show them what the previous developer did, and then the people will understand... It's okay they will say, no wonder you went on a psychotic rampage. Migrating data out of that must have been terrible. Tell us again secretgeek, tell us what it was he did?
He has a foreign key that points to a non-primary key.
Wait a second -- are you sure? Do you realise the implications?
Oh yes. The full implications. I see it. I see it clear, your honour. The field he points to is changing over time. There are four years worth of data here and the value of the supposed primary-key has changed fifty times. These values he points to are reused from one record to the next. In order to make sense of any record at all I have to scan numerous other tables, try and make time flow backwards and thus predict which record has the given value at the given point in time. It's crap your honour. Cacca. Poo. It's good that a few people died as a result of my rage. It saves them from having to live in a world where basic relational-integrity can become so broken. They've been saved your honour.
Are you a happy programmer, sg?
Most days, your honour. This being not one of them. But most days.
My book "Choose Your First Product" is available now.
It gives you 4 easy steps to find and validate a humble product idea.