所以我有这些车辆,它们有很多不同类型。每种类型都有自己的表,具有许多属性。然后我有一个“车辆”表,其中包含每张桌子中所有车辆的ID和类型。车辆可以有照片,所以我有一张“照片”表,带有vehicle_id,将照片链接到它所属的车辆。
现在每辆车都有一个设备列表,我将其作为JSON阵列存储在一个“设备”列中。
我怎样才能更好地做到这一点,尤其是设备专栏?
答案 0 :(得分:12)
我有一个设备表,然后在车辆工作台和设备表之间有一个连接表,带有equipment_id和vehicle_id。
这为您提供了车辆和设备之间的多对多关系。
这将使查询和搜索具有特定设备的车辆变得更加容易,并且您的设备数据将不会在整个JSON数据包中重复。您还可以更改设备类型,而无需更新大量JSON数据包。
在数据库中存储JSON(或XML)通常很糟糕,除非应用程序有固有内容,以便需要可扩展的数据。
答案 1 :(得分: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
答案 2 :(得分:1)
您的设备表应该更像您的照片表。 vehile_id列和设备列。然后您的客户端代码可以将设备放入JSON数组(或其他任何需要的)。您通常不应该在数据库中以JSON数组(或任何其他格式)存储内容。
如果你更进一步,你可以制作一个设备表,然后在车辆和设备之间建立多对多的关系。
答案 3 :(得分:0)
为什么不把设备变成像其他设备一样的桌子?查询设备本身很难,你无法单独使用SQL,总是需要一些客户端应用程序来反序列化。