-1

我的应用程序中有一个图表,我需要将其保存到数据库中。所以,首先,我创建了一个 Nodes 表和 Edges 表:

Node 
- id PK
- name TEXT
- x INT
- y INT

Edge 
- id PK
- from FK REFERENCES Node
- to FK REFERENCES Node

但是,我们将在两个节点之间发生多个事件,这需要它们自己的表。我们将在一对节点之间有多个事件。我们的数据库删除 Edge 表并使用事件表是有意义的。

Node 
- id PK
- name TEXT
- x INT
- y INT

Event
- id PK
- from FK REFERENCES Node
- to FK REFERENCES Node
- event TEXT
- date DATE

然后,我将简单地从事件中推导出边缘。如果 A 和 B 之间发生一个或多个事件,则会在 A 和 B 之间渲染一条边。

到目前为止,一切都很好。

但是现在,我们想要持久化更详细的布局信息。计算和渲染两个节点之间的边缘,但我们希望它具有持久保存在数据库中的用户设置偏移量(很像 Miro 或 Figjam,或 Keynote / Visio 等)。

这显然不是我们想要单独添加到每个事件中的东西,而是只为每个边缘保存一次。

我可以通过放回 Edge 表来做到这一点:

Node 
- id PK
- name TEXT
- x INT
- y INT

Event
- id PK
- from FK REFERENCES Node
- to FK REFERENCES Node
- event TEXT
- date DATE

Edge
- id PK
- from FK REFERENCES Node
- to FK REFERENCES Node
- offset INT

但是现在我需要创建一个边缘行,如果一个新事件是用一个独特的从到组合创建的(但如果这个从到组合已经存在,则不需要),如果最后一个事件具有特定的从到到,则需要删除边缘组合被删除以防止孤立边缘存在,依此类推。我的架构中只是有一些冗余,我想知道是否有更好的方法来设置它以摆脱这种情况。

有没有更好的办法?如果是这样,您会建议什么解决方案?


注意:我知道我所描绘的故事会建议我从 Event 表中删除 from 和 to 并返回到 Edges 表,但我的实际故事更复杂,我有充分的理由在 Event 中保留 from 和 to桌子。请考虑将 from-to 键从 Events 表中移开是不可选择的。

4

0 回答 0