I think you are onto something here. If you look at things from the Database side, you will want to define your entities. An entity will deserve its own table. You can define some entities by considering some sort of event or action that would create a new record, in other words, create a need to log this event or action. The term event is being used loosely to help you discover entities. Consider the Contacts table in the example. Contacts are not really an event. Yet, Contacts are identified as an Entity and deserve their own table.
Within the sample DB, there is a table which lists Universities. I used data from the internet to populate this table. I did not consider the relevance of a given university prior to adding said university to the table. Simply, it met the prerequisite of being a University. So, it was added.
As you define additional entities, you find additional uses for tblUniversities' PK field. The sample DB has a table for Clients. It has a Foreign Key field that can be populated with the value from the PK field in tblUniversties. There is not any need for adding all the different fields contained within tblUniversities to the tblClients. Duplicating these fields will go against the Rules of Normalization. Having said that, if the full description of the Universities was contained within tblClients AND there was not a need to have a SEPERATE table for Venues, you would not violate Normalization.
If you create a table for Venues, model it after tblClients. I have thought about this a little. It is possible to have your Clients and Venues combined within a single table. However, it is a simpler solution if there are separate tables for these entities. I believe the need for separate tables becomes more evident when considering additional entities that use fields already contained within tblUniversities, e.g. adding a tblDistance.