我有一张表,该表跟踪有关(例如本例中)汽车的信息。每个条目都包含有关汽车上某个零件的描述。因此,例如,这是表数据的一段代码:
+-----+-----------+--------------+-------------+
| 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?)
这个模式是否首先对这个目的不利?比较汽车模型是此应用程序的主要目标,因此,如果一口砍掉第一张桌子的表结构似乎是个坏主意,那么我将接受其他模型。
答案 0 :(得分:0)
第一个表看起来不太正确,因为最终将导致创建冗余数据。 备用数据模型-使用以下数据模型创建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链接中,以根据您的表对现有数据模型进行查询,并针对建议的数据模型更改进行查询。您能否在下面的链接中找到解决方案,看看是否对您有用。
https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=c207dd2b71545ed787db0fb7ef65800a