Broken

Monday, 10 April 2000
I've lost my way. That is not a real disaster. I often take some time to refind direction. But, at this moment, I am Schiphol (Amsterdam Airport). This is familiar territory, an area where I used to work.

I've just arrived. Now I'm looking for bus 169 towards Amstelveen. (/...line169). I've walked to the bus stop on automatic pilot, but bus 169 seems to have vanished. With great astonishment, I staring at a sign for bus hundredninetynine. Schiphol is a dynamic environment, with continuous construction work going on. But hiding a complete bus is bit overdone. Will I now face difficulty getting off Schiphol (www.schiphol.nl/...)? This is rediculous.

U call my appointment in Amstelveen to tell I'll be late due to logistic problems. She says bus 169 still rides it route as usual. Well, here I am, specialised in logistic planning. As a stupid, newly arrived tourist I reluctantly stroll towards the kiosk.

I press a few buttons and the screen shows a map, with the 169 bus stop, exactly at the point where I just came from. Might I have overlooked something? Utterly confused I walk back again. No, the bus stop really isn't there any more.

Shall I take a taxi? No, that's below my level of honour. Go and ask for directions. There is no alternative. Like a very dumb blond I board bus 174, which does ride to Amstelveen. "O, that's the 199 nowadays" says the driver, with a heavy Amsterdam accent. "but the route still is exactly the same" he adds happily.

Hmm, the mental fog moves away, and I get a clear picture. This is a referential integrity problem.

  • My head still contains a foreign key, with value '169'.
  • The kiosk application has the same problem.
  • And yes, my appointment in Amstelveen has outdated information too.
But the bus has a new key value. My foreign key is broken. No wonder I couldn't find the bus. Would a bit of relational theory solve this problem?
  1. A 'cascaded delete' doesn't seem appropriate here. Updating the kiosk application won't be too much of a problem, but a human brain is surrounded by a excellent fire wall.
  2. Update all references first? No. hat isn't an option either. It could take years to complete such a renumbering.
Codd is still right. There is only one real solution. Keys should never change value. Not in databases, neither in the real world.

Till next week!
Nut