I have a basic but very important transactional database design question. I am designing a transactional database that models four real world entities. Each of these entities has an Owner attribute. When a user creates an entity they will specify who the owner of that entity is. This owner can then change at a later date. While theoretically each owner could be different based on the real world scenarios I expect a small number of owners with the same person owning many of the entities.
In the current design the Owner is stored in a basic Owner table and each of the 4 entities is joined to this same Owner table with the Owner ID being the FK in the entity tables. The owner table is basic; it is OwnerID and Name, where OwnerID is the PK, and the OwnerID is a FK in each of the entity tables.
I have a sneaky feeling this is the wrong approach for a Transactional database and that the approach I am taking is as if I was designing a reporting database (star schema) with the Owner being a dimension of these entities. In the current design it looks like the Entity belongs to the Owner as opposed to the opposite way around.
The alternative is that I either store the Owner on each entity table or create Owner specific table for each entity i.e. table EntityOne which then joins to EntityOneOwner where the EntityID is a FK in the EntityOneOwner table.
Hope I am making sense here. Thoughts?
Actually this is the correct approach for an OLTP database – sounds like a good normalized database.
A reporting database (OLAP, for instance) would be denormalized with the owner Name being repeated in the different tables for ease of querying.