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