2

所以我有这些车辆,它们有很多不同的类型。每种类型都有自己的表,具有许多属性。然后我有一个“车辆”表,其中包含每个表中所有车辆的 ID 和类型。车辆可以有照片,所以我有一个“照片”表,带有一个 vehicle_id,将照片链接到它所属的车辆。

现在每辆车都有一个设备列表,我将其作为 JSON 数组存储在单个“设备”列中。

像这样的东西:http: //pastie.org/353195

我怎样才能更好地做到这一点,尤其是设备栏?

4

4 回答 4

12

我将有一个设备表,然后在车辆表和设备表之间建立一个连接表,其中包含设备 ID 和车辆 ID。

这为您提供了车辆和设备之间的多对多关系。

这将使查询和搜索具有特定设备的车辆变得更加容易,并且您的设备数据不会在您的 JSON 数据包中重复。您还可以更改设备类型,而无需更新大量 JSON 数据包。

将 JSON(或 XML)存储在数据库中通常是不好的,除非应用程序有一些固有的东西,例如需要可扩展的数据。

于 2009-01-05T20:45:29.723 回答
4

除了装备栏,你的设计还不错。我建议有一个带有 id 和 name 的新表,然后是一个将车辆链接到它拥有的设备的表。

vehicles:
id | type
---------
1  | tank
2  | car
3  | boat
4  | car

equipment:
id | name
---------
1  | radio
2  | abs

vehicles_ equipment:
vehicles_id | equipment_id
2           | 1
2           | 2
于 2009-01-05T20:48:27.707 回答
1

您的设备表应该看起来更像您的照片表。vehile_id 列和设备列。然后您的客户端代码可以将设备放入 JSON 数组(或其他任何需要的内容)。您通常不应该在数据库中以 JSON 数组(或任何其他格式)存储内容。

如果您更进一步,您可以制作一个设备表,然后在车辆和设备之间创建多对多关系。

于 2009-01-05T20:45:40.270 回答
0

为什么不让设备像其他人一样成为桌子?查询设备本身会很困难,你不能单独使用 SQL 来完成,总是需要一些客户端应用程序来反序列化它。

于 2009-01-05T20:47:37.363 回答