我有一个这样的SQL表:
column(id, name, title, view1, view2, view3, view4);
其中view1, view2,...
是布尔字段,指示当选择了相应的viewX时,是否显示或隐藏带有name
的特定表列。
例如,考虑一个具有诸如(time, pressure, efficiency, ...)
之类的列名和各种数据的表(有关“列”的定义,请参见下文)
time | pressure | efficiency
----------------------------
00:00 | 53.3 | 39%
00:01 | 53.3 | 39%
00:03 | 53.3 | 39%
我希望选择view1
显示模式,其中view1
仅显示time
列。然后,我可能希望选择view2
显示模式,在该模式下,我只想查看time
和pressure
列。 view3
仅显示time
和efficiency
。 view4
显示所有列名和数据(time, pressure, efficiency)
。
如何规范该表?我很难弄清楚该往哪个方向走。我首先需要对其进行规范化吗?
术语
要使用清晰的术语,我将使用单词“ column”来表示我的HTML表列用例,其中列是(时间,压力,效率等),单词“ field”表示SQL数据库字段。
P.S。我的答案似乎是在列表和组表之间创建一个 relation ,其中列包含值(时间,压力,效率),组包含值(view1,view2,view3等) 。基于关系,如果关系数据库表包含带有(视图X,字段名称Y)的行,则在选择视图X时将显示字段名称Y。我认为这是我的答案。
答案 0 :(得分:2)
您可以创建一个包含布尔值的单独表:
first_table: column(id, name, title, sort_order);
second_table: column(id, first_table_id, view_no, shown);
此处shown
列包含布尔值。
答案 1 :(得分:1)
my_table_1(id *,名称,标题,排序顺序);
my_table_2(my_table_1_id *,my_view *,状态);
*
=(主键的组成部分)