我可能想多了,但我认为“地区”、“县”、“城市”和“地方”之间可能存在关系——属于“地方”的项目也应该属于城市、县和地区。
您可以在您提供的两种设计中解决这个问题 - 但您需要大量额外的逻辑。在第一个解决方案中,您需要确保每次插入记录时,都从“左到右”填充位置 - 只有“位置”的记录是无效的。
在第二个解决方案中,您需要填充所有相关行——Chelsea 中的项目还必须具有伦敦、米德尔塞克斯和英格兰东南部的记录。
还有另一种方式...
Table: location
ID Name Parent
------------------------
1 South East England null
2 Middlesex 1
3 London 2
4 Chelsea 3
5 Kent 1
6 Canterbury 5
Table: item
Id name
-----------------
1 Posh Boy
2 Cricket ground
3 Rain
Table: item_location
ItemID LocationID
--------------------
1 4 //Posh boy in Chelsea
2 2 // Cricket ground in Middlesex
3 1 // Rain in the South East of England.