Locations, single primary plus multi-secondary I'm looking for suggestions/best practices for implementation of a location management DB.

Locations have a primary access point and potentially infinite secondary access points. They must have one and only one primary access point. These access points may be referenced differently by other locations. (ie a secondary access point for one location may be the primary of another).
In the interests of DRY, I would like to have one table of "Locations" and another table of "AccessPoints". I'm struggling with intermediate tables/rules to enforce this behaviour.
Sounds pretty straightforward, so perhaps there is something I don't understand?

CREATE TABLE LOCATIONS
( location_key ... primary key not null
, location attribute_1 ... not null
, ...
, location attribute_n ... not null );

CREATE TABLE ACCESS_POINTS
( access_point_key ... not null
, location_key ... not null
, access_point attribute_1 ... not null
, ...
, access_point attribute_m ... not null
,    constraint ... primary key (access_point_key, location_key)
,    constraint ... foreign key (location_key)
                    references LOCATIONS (location_key)
);


A assume here that several locations can share the same access_point.