【发布时间】:2014-08-28 23:37:55
【问题描述】:
我正在开发一个批处理应用程序,该应用程序允许用户提交有关特定车辆信息的请求。用户可以使用 VIN 或牌照/州组合提交请求。我提出了如下表结构:
待处理车辆
vehicle_id(fk)|user_id(fk)|status|start_time
车辆
vehicle_id|VIN|plate|state
我的同事认为这是糟糕的设计,因为 Vehicles 中的每条记录要么有一个空 VIN 字段,要么有一个空车牌和状态字段。相反,他们提出了以下建议:
待处理车辆
vehicle_id(fk)|user_id(fk)|status|start_time
车辆
vehicle_id(pk)|field|value
Vehicles 中的条目将包含一行用于 vin:
1|"vin"|"123
或两行代表一个板块/州:
2|"plate"|"abc 123"
2|"state"|"NY"
我认为第一个解决方案会更容易查询,而且没有任何明显的缺点。应该首选哪种设计?保证为空字段真的是糟糕设计的指标吗?
【问题讨论】:
-
我不确定它应该如何与两行一起工作来表示板/状态。如果
vehicle_id(pk)是主键,则不能有两行具有相同的vehicle_id。另外,据我所知,每辆车都必须有 VIN(可能未知),但不能有车牌。此外,车牌号会随时间变化(可能会发生变化)。
标签: database relational-database database-schema