我正在开发一个应用程序,它可以创建两种类型相同的事物的随机“战斗/对抗”。比方说,它是关于汽车及其功能的,例如:
会有许多功能,与安全,舒适等相关的东西。
汽车A将有一个安全功能,安全气囊,汽车B,它将是ABS和空调和汽车C加热座椅。
现在我要存储一张清单:安全气囊与ABS,加热座椅与空调。请注意,我不能做安全气囊和加热的座位。
我想出了两个办法使这件事成功。
用户
id | username
汽车
id | name
群组
id | name
特性
id | car_id | group_id | value
对比
第一版
id | user_id | group_id | car_a_id | car_b_id | winner_id
第二版
id | user_id | feature_a_id | feature_b_id | winner_id
现在,对于第一个版本,我必须使用car_a_id
、car_b_id
和group_id
来获取features
,但这确保了我不会比较不在同一组中的特性。问题是,如果任何功能被删除,我将有一个无效的相对,我不会知道,直到我真正获取这些特性。
第二个版本解决了这个问题,因为我只需在外键中添加一个ON DELETE CASCADE
。但是,现在我必须确保行的每个特性在获取它们时都在同一组中(我不能依赖于以下事实,即指定的变量列表实际上是有效的)。
现在我不喜欢这两种解决方案,我觉得我做错了什么,但是我找不到更好的了。
有没有更好/更简单的方法来做到这一点?
发布于 2016-08-28 18:22:12
我在上面作了评论,但想发布一些解决方案。
如果“is”是功能比较的直接特性,则需要直接引用“is”中的特性。这在您的“第二个版本”中得到了显示。
听起来,主要关注的是确保“is”中的两个特性都属于同一组。您可以通过几种不同的方式来完成这一任务。
总之,我认为您需要与UI进行协调,以确保用户在比较特性时不会违反组成员约束(解决方案1)。
https://stackoverflow.com/questions/39174557
复制相似问题