I don't know any official design documentation for AdventureWorks, but I use trainers and extensively use AdventureWorks databases for demos and labs, so I am familiar with it.
The BusinessEntity table is a classic example of a SuperType / SubType design that reduces data redundancy because customers can also become suppliers, employees can become customers and any other combination. In addition, this means that you do not save the details associated with all objects several times in separate tables, minimizing the effort in case of code changes.
CountryRegionCode Code I'm not sure, but I suspect one of three reasons:
- There are not enough individual combinations to provide an additional table due to reporting performance (this could be verified using some simple COUNT (*) GROUP BY statements)
- They wanted it in the same table, so that in the future they had the flexibility to model the hierarchical structure using a hierarchical identifier (this is the least similar option)
- It was a normalization mistake! (My money for this option!)
Pete carter
source share