我有一个我已经做的GPS android应用程序。它使用SD卡上的SQLite数据库来存储位置数据。我正在尝试编制数据库的ERD(实体关系图)。这是我遇到问题的地方。数据库有一个轨道主表和一个航点组(一个或多个航点的集合)。这些表格中没有位置数据,只有轨道或航点组的名称,开始/停止时间和日期以及uid。对于这些表中的每一行,都会创建一个包含经度和纬度信息的新表。在子表中,每行都是一个点或顶点。子表名称是“master”表格的uid,加上traks或waypoints的“t_”或“w_”。这是我想出了利用https://www.draw.io:未知数量的表的SQLite图ERD
http://s10.postimg.org/usqsrwjmx/Untitled_Diagram.png
(抱歉,我没有10个代表处点后的图像,笑)
我认为表之间的组成环节是正确的因为只有在主表中有一行时才存在子表。如果主行被删除,相应的子表也被删除。但是如何显示主表中每一行都有一个子表?这也有点奇怪,因为表名不提供此功能,所以在子表中不需要FK。
我不认为我想在这么晚的时候更改我的数据库结构,因为应用程序很快会被发送出去进行测试,但是我会对这个问题的其他数据库设计感兴趣。
感谢您的反馈Thorsten。好的,只是为了确保我明白你的观点。我应该有一个包含所有轨道顶点的表格(对于所有轨道),那么FK就是“主”轨道的用户。是的,我可以看到。拥有一张巨大的表的任何性能问题,可能包含几十万条记录,而不是每个记录有几千条记录的许多表? – fallingdog 2014-09-03 23:10:37
另外,我不确定我现在看到了我的缺陷。我想如果应用程序将来需要将数据外部的数据传递给“真正的”RDBMS系统,那么风险就会是这样。这是一个真正的风险,因为他们有一个oracle数据库和一个esri SDE以及...... – fallingdog 2014-09-03 23:18:52
我不认为几十万条记录很大。这就是dbms的全部内容:尽可能快地找到合适的记录。通过应用FK约束和索引,dbms可以轻松找到获取数据的最佳方法。这应该不成问题。 – 2014-09-04 06:06:19