As DontRepeatYourself says,
-
- Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
What are some attributes of the home for this info? (In descending order of importance)
- Updatable - You have to be able to change it, or it's not going to help you. For example: You've harvested some data from a manufacturer's catalog. You make a tweak such as reordering the fields. Now, if the upstream data ever changes, your tweaks are going to get plowed over. You need to realize that the manufacturer's database is the authoritative source for their info, and that your new reordering needs a separate home of its own (so you'd store a list of the fields, reordered, without the values).
- Deduplicated - You want your AuthoritativeSource to be squeaky clean. You can always re-duplicate info once you've deduplicated it.
- Few - That is, you want your sources to be as few as possible without adding complexity.
- Close to similar info - Data is social -- it likes to be near its friends.
- Convenient - If the source is squeaky clean, but hard to get to, odds are that people will take shortcuts.