只需快速查询最适合小应用程序的数据库结构,[数据库将是SqlLite或MySql以及用PHP编写的应用程序,如果有帮助的话]
基本上我的问题是条目会有很多选项,这些选项可能会被添加和删除,所以编辑db结构可能不是最好的主意。我只是想知道将这些选项存储到数据库的最佳方法是什么。在过去类似的情况下,我通过将序列化或JSON格式的数据存储到表行来实现这一点,但我想知道这是否是最好的选择,任何建议都会很棒。
应用程序是基于地图的,用户可以在其中添加/删除标记,标记具有类型[例如商店,学校,医院等],用户还可以添加和删除类型。除此之外,使用可以创建地图视图,例如只有学校和医院可见的地图。
有点难以描述,但这里是描述[简化]表结构
标记
+---------+-----+-----+--------+-----------+
|markerID | lat | lng | typeID | name |
+---------+-----+-----+--------+-----------+
|1 | 52 | -9 | 1 | A School |
|2 | 52 | -9 | 2 | A Shop |
|3 | 52 | -9 | 1 | B School |
|4 | 52 | -9 | 3 | A Hospital|
+---------+-----+-----+--------+-----------+
标记类型
+-------+-------------+--------------+
|typeID | name | icon |
+-------+-------------+--------------+
|1 | Schools | school.png |
|2 | Shops | shop.png |
|3 | Hospitals | hospitals.png|
+-------+-------------+--------------+
地图视图
+------+---------------------+---+
|mapID | name | ??|
+------+---------------------+---+
|1 | Schoool & Shops | ??|
|2 | Hospitals & Schools | ??|
+------+---------------------+---+
所以我的问题基本上是,存储mapID#42应该显示带有typeID#2,#5和#23的标记的信息的最佳方法是什么。
答案 0 :(得分:1)
据我所知,Map视图可能有很多标记(这是逻辑)。所以我认为连接表是最好的解决方案。一个名为MapMarkers的表,具有以下结构: MapMarkers
| id | MapID | MarkersID | ?? | ( you can add other infos for example if you want to store personnalized maps for each client you can add userID)
答案 1 :(得分:0)
您应该使用第三个表来表示两个表之间的关系:
mapView ----< mapView-markerType> ---- markerType
mapView-markerType将具有以下属性:| id | mapID | typeID |
(显然你应该得到比mapView-markerType更短的名字)
修改强> 考虑到您对帖子所做的更改,您将获得:
<强> mapView_markerType 强>
id* | mapId | typeId
--------|----------|----------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 2 | 3
EDIT2
所以,为了进一步解释我在下面的评论中的含义:
地图视图
+------+---------------------+----------+
|mapID | name | typeComb |
+------+---------------------+----------+
|1 | Schoool & Shops | {1,2} |
|2 | Hospitals & Schools | {1,3} |
+------+---------------------+----------+