我的数据库有两张表,一张是城市的距离矩阵,另一张是城市。我的第一个结构是这样的:
- 城市
- 用户界面
- 姓名
- 纬度
- 经度
和
- 距离
- FromCityID
- 到城市ID
- 距离长度
UUID
是CITY表的主键,FromCityID
引用ToCityID
CITY作为外键,都是DISTANCE表的复合主键,因为两个城市之间的距离应该是唯一的。
但后来意识到我不想使用UUID
和自动增量作为主键,因为我从 XML 上传这个数据库中的数据,其中包含城市和距离。由于距离可能不仅包括当前 XML 中提到的那些城市,还包括数据库中任何先前存储的城市。
我需要一个跨数据库和 XML 的 ID 系统。纬度/经度似乎是最好的选择,所以我将表格更改为:
- 城市
- 姓名
- 纬度
- 经度
和
- 距离
- FromCityIDLatitude
- FromCityID经度
- ToCityIDLatitude
- ToCityID经度
- 距离长度
Latitude
并且Longitude
是 CITY 表的复合主键;FromCityIDLatitude
//引用CITY作为外键FromCityIDLongitude
,所有四列都是DISTANCE表的复合主键ToCityIDLatitude
。ToCityIDLongitude
但是使用 4 列作为主键是一个糟糕的设计。在这种情况下,最好的事情是什么?