对于一个小型应用程序,只需快速查询最佳的数据库结构,数据库将是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显示标记的最佳存储方式是什么。
发布于 2012-12-01 21:06:22
据我所知,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)发布于 2012-12-01 21:03:55
您应该使用第三个表,它表示两个表之间的关系:
mapView
mapView-标记类型将具有以下属性:_
(显然,您应该得到比mapView更短的名称-标记类型)
考虑到您在帖子上所做的更改,编辑将得到:
mapView_markerType
id* | mapId | typeId
--------|----------|----------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 2 | 3EDIT2
因此,为了进一步解释我对以下评论的含义:
地图视图
+------+---------------------+----------+
|mapID | name | typeComb |
+------+---------------------+----------+
|1 | Schoool & Shops | {1,2} |
|2 | Hospitals & Schools | {1,3} |
+------+---------------------+----------+https://stackoverflow.com/questions/13663674
复制相似问题