Cardinality between tables in the present or over time?
I think you might be missing an entity in your model. Over time a store can be associated with multiple groups and a group can be associated with multiple stores, so unless you only want to record the current state and no history you have a N:M relationship and need a junction table. Something like:
Store      StoreGroup                        Item
=====      ==========       Group            =============
Id   &lt;---- StoreId          ==========       Id
           GroupId    ----&gt; Id         &lt;---- GroupId
           StartTime        GroupProp1       ItemProperty1
           EndTime          GroupProp2       ItemProperty2

You may need to enforce the &quot;one store has one group at a time&quot; rule in your application layer unfortunately, or using triggers, I'm not sure SQL constraints will be sufficient.
As an alternative to directly modelling changes over time, if the database you are using supports temporal tables (sometimes called &quot;system versioned&quot;) you could use that feature instead.
Then you can have:
Store      Group            Item
=====      ==========       =============
Id   &lt;---- StoreId          Id
           Id         &lt;---- GroupId
           GroupProp1       ItemProperty1
           GroupProp2       ItemProperty2

and one group has one store is enforced by only being able to have one store in the data for a group, and one group per store can be enforced by a unique constraint on Group.StoreId. But I might recommend the other approach unless you can guarantee that the one-group-one-store rule will hold for future versions (it seems unusually limiting to my mind), as the former approach would be easier to refactor to allow the greater flexibility.