在数据库中记录“全部”

问题描述 投票:0回答:0

我有以下假设场景:

用户可以切换飞机类别,无论他是否感兴趣。 如果用户切换

Helicoper
,将出现以下带有子类别的复选框:

'Chinook', 'Apache', 'Cargo', 'Military'

用户可以以复选框的形式进行选择。

如果用户切换

Airplane
,将出现以下带有子类别的复选框:

'Passenger', 'Ultralight', 'Cessna', 'Cargo', 'Military'

下表用于存储用户(id:1)的选项:

aircraft_type

id | name   
1    Helicopter
2    Airplane

飞机等级

id |  name   
1     Chinook
2     Apache
3     Ultralight
4     Cessna
5     Cargo
6     Military 

aircraft_x_class

id | aircraft_id  |  aircraft_class_id
1       1     |        1  
2       1     |        2
2       1     |        5
2       1     |        6
3       2     |        3
4       2     |        4
5       2     |        5
6       2     |        6

user_x_aircraft_x_type_x_class

id | user_id | Aircraft_x_class_id
1      1           1 
2      1           2
3      1           3

现在,如果我碰巧有 1000 个用户都选择了每个

aircraft_class
,那么记录会很快堆积起来。

为了防止(可能)在我的联合表中出现不必要的记录,我在

aircraft_model
想到了以下选项,即“全部”。

飞机等级

id |  name 
....  
7     all

aircraft_x_class

id | aircraft_id  |  aircraft_class_id
....
7       1     |        7 
8       2     |        7

因此,当用户选择某种类型的每个

aircraft_class
时,它不会创建所有记录,而只会创建一个声明“全部”的记录

user_x_aircraft_x_type_x_class

id | user_id | Aircraft_x_class_id
1      1           7

问题

这是减少嵌套选项记录的常见/好事吗?有没有更好的方法?

database checkbox mysqli nested record
© www.soinside.com 2019 - 2024. All rights reserved.