Database model / design best practice
I would say that if the company locations and non-company locations store a fair amount of different data, then to avoid a bunch of NULLS I would have two tables, and let the application insert data into the appropriate table. A different approach could be to have a table [Locations], with all the data that it needs, then have a table [CompanyLocations] and another table [Non-CompanyLocations]. The tables for company and non-company locations would then reference a base table using a foreign key, something very like what you have in the image, if I am reading it the same way you are.