0

2 つのテーブルを想定してみましょう。TableA には、さまざまなステーションからのさまざまなデータ測定値が保持されています。TableB は、TableA で使用される列に関するメタデータを保持します。

テーブル A には次のものがあります。

stationID int not null, pk
entryDate datetime not null, pk
waterTemp float null,
waterLevel float null ...etc

テーブル B には次のものがあります。

id int not null, pk, autoincrement
colname varchar(50),
unit varchar(50) ....etc

たとえば、tableA の 1 行のデータは次のようになります。

1 | 2013-01-01 00:00 | 2.4 | 3.5

tableB からの 2 行の読み取り:

1| waterTemp | celcius
2| waterLevel | meters

これは簡単な例です。実際、tableA には 20 近くの異なるデータ列があり、table b には 10 近くのメタデータ列があります。

次のような結果を出力するビューを設計しようとしています。

StationID |      entryDate   | water temperature |  water level |
    1     | 2013-01-01 00:00 |     2.4 celcius   |   3.5 meters |

2つの質問:

  1. 各列に TableB からのサブセレクト (..."where colname='XXX'") を指定する以外に、これはひどく不十分なようです (言うまでもなく...手動:P )、前述の結果を取得する方法はありますか? colname の自動一致で?
  2. これはデータベースの設計が悪いのではないかという予感があります。そうですか?はいの場合、より最適な設計は何でしょうか? (前述のデータ構造の複雑さに注意してください)
4

4 に答える 4

0

メトリックごとに行に反転する必要があると思います。上記のデザインを見てください:

1 | 2013-01-01 00:00 | 2.4 | 3.5

表 b のどの行に該当するかを知るにはどうすればよいですか?

私はこのようなものを試してみます: テーブル B:

Metric_Key  |  Metric
1          |  WaterLevel in Meters
2          |  Temp in Celcius

...

表 A:

StationID   | entrydate        | Metric_Key   | Value
1            2013-01-01 00:00      1           2.4
于 2013-10-09T15:53:26.753 に答える