如何规范化具有相似列名的 table?

How to normalize a table with similar column names?

我有一个 SQL table 像这样:

column(id, name, title, view1, view2, view3, view4);

其中 view1, view2,... 是布尔字段,指示当相应的 viewX 被 select 编辑时,是否显示或隐藏具有 name 的特定 table 列。

例如,考虑一个 table,其列名如 (time, pressure, efficiency, ...) 和各种数据(请参阅下面的 "column" 定义)

time  | pressure | efficiency
----------------------------
00:00 |    53.3  |    39%
00:01 |    53.3  |    39%
00:03 |    53.3  |    39%

我希望 select view1 显示模式,其中 view1 仅显示 time 列。然后我可能希望 select view2 显示模式,我只想看到 timepressure 列。 view3是只显示timeefficiencyview4 显示所有列名和数据 (time, pressure, efficiency).

我怎样才能正常化这个 table?我很难弄清楚该往哪个方向走。我需要首先对其进行标准化吗?

术语

为了使用清晰的术语,我将使用 "column" 一词来表示我的 HTML table 列用例,其中列是(时间、压力、效率等),和单词 "field" 表示 SQL 数据库字段。

P.S。我的答案似乎是在列 table 和组 table 之间创建一个 关系 ,其中列包含诸如(时间、压力、效率)之类的值,以及组包含(view1、view2、view3 等)。基于关系,如果关系数据库 table 包含带有(视图 X,字段名 Y)的行,则选择视图 X 时将显示字段名 Y。我想这就是我的答案。

my_table_1(id*, 姓名, 职务, sort_order);

my_table_2(my_table_1_id*,my_view*,状态);

* =(组成)主键

您可以创建一个单独的 table 来保存布尔值:

first_table: column(id, name, title, sort_order);

second_table: column(id, first_table_id, view_no, shown);

此处 shown 列包含布尔值。