I would suggest that you should do this as a second, separate table.
The reasoning is that, as you suggest in your question, only approximately 10% of your customers need these "updates" and therefore approximately 90% of the records from the "customers" table will have a field always containing a NULL value, if you do it as an additional field on the same customers table. Implementing this as a second table avoids this issue.
This isn't really a big issue since your customers table is very small, but the more important issue I would think about when designing something like this is future-proofing.
Basically I might ask myself:
"Would I, at any point in the future,
need to know about the customer's
history of updates rather than just the very last one?"
Depending upon the application of this (and it sounds like a business-driven program from what you're saying) there may well be a need to examine customer update history. Think Management Information, Reporting, Yearly summaries etc.)
In pretty much all of the business applications I've ever wrote, I've had to retain pretty much everything for at least a few years (it then usually gets archived off to a data warehouse or separate database) for these exact purposes.
Even if you're not interested in the customers history of updates, I personally, prefer the 2 table approach as it certainly allows for historical record keeping, and offers a better designed approach (as only some records from the customers table will need records in the 2nd "updates" table). That said, however, see my EDIT below for further information. If I knew that a history would never be required to this data, I'd implement as a single additional field on the existing customer's table.
Also, don't worry about having a "bunch of very small tables" in your database. There can usually be very good reason for having them, and is a part of the object-relational impedance mismatch and is usually overcome by a more "cohesive" object-oriented design in your application's code.
EDIT:
(In response to the comments on my answer).
Aaron Bertrand makes a very valid point in that, if you were to have many instances of additional pieces of data just like this, and you continually used a separate table each time linked via primary key, you would end up with a plethora of very small tables to hold data about a single one of your customers. In querying the database to extract a complete set of data for even one customer, this could become exceptionally cumbersome and overburdened with excessive and inefficient JOINS
over many tables.
Depending upon the nature of the "additional" pieces of data, one has to make a pragmatic decision as to how it will be implemented. Aaron suggests that, in the case of the "LastUpdate" date field, having lots of NULL
's in 90% of the customer table is no bad thing, and I do agree with him here in that, from the perspective of NULL
's, this isn't a bad thing. My own suggestion to utilise a 2 table approach was not so much based upon the desire to remove the NULL
's (although it does accomplish that), but rather to ensure that a history of "LastUpdate" dates can be maintained.
Of course, if keeping a history is entirely not required (and bear in mind that what is not required today may well be required tomorrow) that implementing this "LastUpdate" date as an additional field on the same "Customer" table would be fine. In fact, if there was only ever a direct one-to-one relationship between a single customer and a single "last update" date, splitting it out into 2 tables would be the wrong thing to do. In this case, I'd implement it as an additional field on the customers table, as it's now a scalar valued property of that customer.
Of course, you can always implement today as a single field on the customer table, and if it becomes a requirement (let's say a year down the line) to now keep a history of "last update" dates, you can always refactor your database to split this into a 2nd table, but bear in mind that you're only collecting historical data from that point on as you will have no record of the previous year's last update dates.
If you do (or will) require a history of "last update" dates (i.e. one-to-many relationship between customer records and "last update" date records) then using a 2nd table approach, linked by primary key is your only choice.