More Keys is More Secure. Right?

Happy Little KeyLast week, we had a heated discussion at work about encryption. We want to encrypt some data in our database, and I proposed that we go with a single private-key encryption mechanism (ignore which exact one for the moment), and my colleagues were pretty-much unanimously suggesting a ‘key per row’ approach. In this post I am going to attempt to explain the rough background, and why I felt their mechanism might not be best.

Continue reading

One Second to Midnight – DateTimes in Sql Server 2005

One Second to MidnightToday I am enthused to write about the DateTime and SmallDateTime datatypes in SQL Server 2005 (and possibly this also applies to 2008, although that has additional date and time types). I am driven to write this because I have seen a number of issues relating to their use in queries and one in particular that is a real annoyance to me – even if I have to admit that it is completely and utterly pedantic (most of the time).

Continue reading

Hello I’d Like to Change my Mother’s Name

An image showing an imaginary signature showing a changing maiden-name; a theoretical impossibilityA few months ago, our client had a ‘Compliance’ team visit. It was a nightmare. Worse than the general guff Marketing / Sales Departments come up with… or those nasty little changes that are all designed to improve the user experience (you know the ones; where you have to turn some design or code on its head, just because the users are apparently totally unable to understand ‘X’ or ‘Y’*). Anyway, I’m not exactly sure what we were meant to be complying to, but some of the changes were so arbitrary that we could not think of a single justification for them.

Continue reading

Big Release Week

A shopping list tells us what we have yet to buy

A very personal note this time. Last week I released a project that was pretty-much the largest single release that I’ve worked on for my current employer.

Like many systems, the history of this one is that as customer applications made their way through the relevant processes, the system recorded various information about the processes that happened and how they worked out. The system then used the presence or absence of those success / fail records to decide what needed to be done next.

Continue reading

The Basic Lookup Table

‘Lookup Tables’ are commonly created in relational data models and databases as part of the normalisation process. For example, instead of having address rows in an address table that continually repeat the words ‘HOME’ or ‘WORK’ to indicate if this is a customer’s home or work address, we might introduce an ‘AddressType’ table, with a primary key of ‘AddressTypeId’. Our AddressType table may look like this:

AddressTypeId    Name
1                Home
2                Work

Continue reading