gpt4 book ai didi

java - 从数据库中的预定义值列表中存储值的最佳方法是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 20:07:13 25 4
gpt4 key购买 nike

假设我有一个代表车辆驱动类型的预定义值列表(RW、FW、4W):

RW - 后轮

FW - 前轮

4W - 四轮

现在,我想从上述 3 个值中取一个值作为我的用户的输入,然后将其存储在数据库中。

据我所知,我可以借助以下任何方法执行此操作:

- 在 UI 上对值进行硬编码,以便 UI 显示仅包含上述 3 个值的下拉菜单。然后将该值存储在 Vehicle vehicle 对象的 String vehicleType 字段中,然后将其作为 String 存储在数据库中。

  • 缺点:

    我)。不在对象级别验证值

    ii).没有在数据库级别验证值。

    iii).尽管很少需要向列表添加新值,但用户仍然无法在运行时添加新值

    - 优点:

    我)。无需在数据库中join 来检索vehicle 对象

  • 在数据库中创建一个包含所有 3 个值的单独表 VEHICLE_TYPE 并将其与 VEHICLE< 链接 表通过。外键。然后从 VEHICLE_TYPE 表填充 UI 的下拉列表。将 vehicle 对象中的值存储为 String

    - 缺点:

    我)。没有对象级别的验证

    ii).需要一个 join 在数据库中检索一个 vehicle 对象

    - 优点:

    我)。在数据库级别验证值(通过外键)

    ii).用户可以在运行时向列表添加新值

  • 在数据库中创建一个单独的表VEHICLE_TYPE,其中包含所有 3 个值,但不要 将它与 VEHICLE 表链接起来。外键。然后从 VEHICLE_TYPE 表填充 UI 的下拉列表。将值存储在 vehicle 对象和数据库中作为 String

    - 缺点:

    我)。没有对象级别的验证

    ii).没有数据库级别的验证

    - 优点:

    我)。数据库级别不需要join

    ii).用户可以向列表添加新值

  • 在数据库中创建一个包含所有 3 个值的单独表 VEHICLE_TYPE 并将其与 VEHICLE< 链接 表通过。外键。然后从 VEHICLE_TYPE 表填充 UI 的下拉列表。在 java 中创建一个 enum VehicleType,然后在 Vehicle 类中添加一个字段 VehicleType vehicleType。根据用户的输入,将 VehicleType 枚举的值存储在 vehicleType 字段中。

    -缺点:

    我)。必须在两个地方更新列表:VehicleType 枚举和 VEHICLE_TYPE 表。可能会导致不一致。

    ii).用户不能向列表添加新值(他可以在表中添加值但不能更改枚举)

    - 优点:

    我)。 UI 级别的验证

    ii).对象级别的验证

    iii).数据库级别的验证

问题:有没有其他方法可以执行上述任务,而没有上述任何缺点?

最佳答案

当然。你的第二个修改:

在包含所有 3 个值的数据库中创建一个单独的表 VEHICLE_TYPE 并将其与 VEHICLE 表链接。外键。然后从 VEHICLE_TYPE 表填充 UI 的下拉列表。将值作为 String 存储在车辆对象中。调用 vehicle.setVehicleType() 时,通过检查数据库中的可能值来验证分配的值是否有效。如果无效,则抛出一个 InvalidArgumentException 或一个子类。

现在您在对象中进行了验证。而且,我不认为必须加入一个骗局。如果不加入表格,您将无能为力。这就是为什么你有很多表。

关于java - 从数据库中的预定义值列表中存储值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3094085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com