How to normalize a database which uses tables as references to other tables?
As per your other post, if you require such delete requirements, it is surely a poor design.

Secondly, there is no "so called" The Best Design.

Third, do not get struck with heavy normalization though essential. Design in such a way that you arrive at a maximum normalization and put it to use. While Beta testing...you shall refine to an extent.

And finally, even if we review / amend your design details, that might not be a best match for your exact requirement. instead, with your given details, if you would have added any particular issue which you foresee, we shall advise on the same.