On the circular-list question, using a self-referencing FK for the "next" item is actually a pretty common pattern when you want to mimic linked-list behavior inside a SQL database. It isn't perfect for every use case, but it works well when your app handles most of the logic and the DB just stores relationships. I've used a similar approach before while working on a small project on summertime saga latest version and the key was making sure each record always has a valid pointer so the loop doesn't break. You could also add a fallback "head" reference if you need fast entry points.
------------------------------
Jack
------------------------------