我有两张桌子
--------------- --------------
| Device | | Connection |
--------------- --------------
| Id PK | | Id PK |
| Serial | | DeviceId FK|
| Model | | DateTime |
--------------- --------------
到目前为止,这么好。 但是每个设备都有很多连接。事实证明,检索设备的最后一个连接太慢,因此决定将设备的最后一个连接的ID存储为设备表中的外键:
--------------- -------------
| Device | | Connection |
--------------- --------------
| Id PK | | Id PK |
| Serial | | DeviceId FK|
| Model | | DateTime |
| LastConId FK| --------------
---------------
现在我们有指向Device和Connection表的循环外键。 它似乎有效,但我读到这是一个糟糕的设计,所以我正在弄清楚如何解决它。
我认为使用联结表可以工作,但我不想允许多对多关系(显然每个设备最后一个连接):
--------------- --------------- --------------
| Device | |LastDeviceCon| | Connection |
--------------- --------------- --------------
| Id PK | | DeviceId FK| | Id PK |
| Serial | | ConId FK| | DeviceId FK|
| Model | --------------- | DateTime |
--------------- --------------
这是个好主意吗?还有其他方法可以避免这种循环外键设计吗?