0

只需快速查询适合小型应用程序的最佳数据库结构,[数据库将是 SqlLite 或 MySql 以及用 PHP 编写的应用程序,如果有帮助的话]

基本上我的问题是条目将有很多选项,并且这些选项可能会被添加和删除,因此编辑数据库结构可能不是最好的主意。我只是想知道将此选项存储到数据库的最佳方法是什么。在过去的类似情况下,我通过将序列化或 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 的标记的信息的最佳方法是什么。

4

2 回答 2

1

据我了解,地图视图可能有许多标记(这是逻辑)。所以我认为连接表将是最好的解决方案。例如名为 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-01T21:06:22.263 回答
0

您应该使用第三个表来表示两个表之间的关系:

mapView ---- < mapView-markerType > ---- markerType

mapView-markerType 将具有以下属性: | 编号 | 地图ID | 类型ID |

(显然,您应该得到一个比 mapView-markerType 更短的名称)

编辑 考虑到您在帖子上所做的更改,您将获得:

mapView_markerType

   id*    | mapId    | typeId
  --------|----------|----------
    1     | 1        | 1
    2     | 1        | 2
    3     | 2        | 1
    4     | 2        | 3

编辑2

因此,为了进一步解释我对以下评论的意思:

地图视图

+------+---------------------+----------+
|mapID | name                | typeComb |
+------+---------------------+----------+
|1     | Schoool & Shops     |  {1,2}   |
|2     | Hospitals & Schools |  {1,3}   |
+------+---------------------+----------+
于 2012-12-01T21:03:55.363 回答