我有一个表跟踪有关汽车的信息,(以下是这样说)。每个条目都包含有关汽车某个部分的描述。因此,例如,这是表数据的片段:
+-----+-----------+--------------+-------------+
| ID | ModelName | PartCategory | Description |
+-----+-----------+--------------+-------------+
| 1 | name1 | category1 | blah blah |
| 2 | name1 | category2 | blah blah |
| 3 | name2 | category2 | blah blah |
| 4 | name2 | category3 | blah blah |
| 5 | name2 | category4 | blah blah |
| ... | ... | ... | ... |
+-----+-----------+--------------+-------------+
是否有任何巧妙的方法来查询数据,以便我可以更轻松地同时比较多个模型的数据?基本上,我想一次比较多辆车的零件类别。但是,并非每辆车都有每个部分类别的记录,因此在这些情况下,我希望无效。我正在尝试制作看起来像这样的东西:
+-----------+-------+--------+--------+-----+
| category | name1 | name2 | name3 | ... |
+-----------+-------+--------+--------+-----+
| category1 | Value | Value | Value | ... |
| category2 | Value | Value | Value | ... |
| category3 | Value | (null) | Value | ... |
| category4 | Value | Value | (null) | ... |
+-----------+-------+--------+--------+-----+
(Is this what you would call a table pivot?)
还是首先对此目的不利?比较汽车模型是此应用程序的主要目的,因此,如果第1个剪切中的表结构似乎是一个坏主意,那么我将对其他模型开放。
第一表看起来不太正确,因为这最终会在创建冗余数据时。替代数据模型 - 使用Datamodel创建3个表,如下所示。
-
表1
┌───────────────────┬──────────────┬─────────────────┐ │ Table_Name │ Model_Config │ │ ├───────────────────┼──────────────┼─────────────────┤ │ Column_name │ Data_type │ Constraint │ ├───────────────────┼──────────────┼─────────────────┤ │ Model_Id │ number(5) │ PK │ ├───────────────────┼──────────────┼─────────────────┤ │ Model_Name │ varchar2(50) │ │ └───────────────────┴──────────────┴─────────────────┘
-
表2
┌───────────────────┬────────────────────────────────┐ │ Table_Name │ PartCategory_Config │ ├───────────────────┼──────────────┬─────────────────┤ │ Column_name │ Data_type │ Constraint │ ├───────────────────┼──────────────┼─────────────────┤ │ PartCategory_Id │ number(5) │ PK │ ├───────────────────┼──────────────┼─────────────────┤ │ PartCategory_Name │ varchar2(50) │ │ └───────────────────┴──────────────┴─────────────────┘
-
表3
┌───────────────────┬────────────────────────────────┐ │ Table_Name │ Model_partCategory_link │ ├───────────────────┼──────────────┬─────────────────┤ │ Column_name │ Data_type │ Constraint │ ├───────────────────┼──────────────┼─────────────────┤ │ Model_Id │ number(5) │ │ ├───────────────────┼──────────────┤ │ │ PartCategory_Id │ number(5) │ Composite_PK │ └───────────────────┴──────────────┴─────────────────┘
我将查询上传到下面的DBFIDDLE链接,以根据您的表格为现有数据模型,并查询建议的DataModel更改。您可以在下面的链接中查看解决方案,看看是否对您有用。
https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=c207dd2b71545ed787db0fb0fb7ef65800a