2010-12-29 19 views
0

私のMYSQLデータベースのテーブルの列のための追加のプロパティを定義したいと思います。他のDBレコードから特定のテーブル列を参照する方法は?

たとえば、私のデータベースの列の測定単位を定義したいとします。私は現在、このテーブルを作成するために計画することを行うには

COLUMN_UNIT 
id 
{table_name, column_name} unique constraint 
unit_id 

(私は複合PKを使用していない私のフレームワークが自動IDフィールドをインクリメント必要なので)

他のテーブル私はあることができた。

UNIT 
id 
unit_name 

WEATHER_DATA 
temperature 
wind_speed 
... 

SENSOR_DATA 
intensity 
frequency 
... 

は、列名とテーブル名にBを使用しています他の列を参照するには?

ありがとうございました!


UPDATE:

私の場合は、カラム内のすべてのレコードは同じプロパティ値を持つことになります。これは列方向のプロパティです。したがって、温度の場合、すべての値は例えば℃で表示されます。 ...例えば、あなたのWEATHER_DATAテーブルが

WEATHER_DATA 
temperature 
temperature_unit_id (FK to UNIT) 
wind_speed 
wind_unit_id (FK to UNIT) 

可能性があり

答えて

1

は、あなたのフレームワークは、同じテーブル上に複数の外部キーを許可する場合、私は知らないUNITテーブルに複数のforeign keysを使用する必要があります...そうでない場合は、私はあなたがテーブル、カラムとUNIT_IDのnaneの名前を含む別のテーブルを作成することもできます..しかし、それは

はそれが

を役に立てば幸い醜い= Sのだろうと推測します編集:

テーブルの余分な情報を格納するテーブルだけのメタテーブルを使用することができます。mysqlは自身のメタテーブルを使用して行数、列タイプなどを格納します。一部のフレームワークでは、ジャンゴ)のような..しかし、あなたがあなた自身のメタテーブルを作成することができ、彼らはあなたの場合には、それは

WEATHER_META 
temperature_unit_id FK 
wind_unit_id FK 

のようなものかもしれないとWEATHERテーブルが

WEATHER_DATA 
id 
temperature 
wind_speed 
... 

だろう、ちょうど他のテーブルのようなものですそうしたい場合は、メタタを1つ作成することもできますすべてのあなたのテーブルのためのble。何かのように

META_TABLES 
table_name 
column_name 
unit_id 
+0

データを含む各列のFK列が重いようです。私は私の質問では指定していないが、温度欄のすべての値は同じ単位になる。だから、この解決策はweather_dataレコードごとに温度のunit_idを繰り返すでしょう... – benjisail

+1

ahhは違う= Pあなたが必要とするものは、テーブルの余分な情報を保存できるMETAテーブルです – pleasedontbelong

+0

Thx!あなたはMETAテーブルとは何かについてより具体的になりますか? MySQLで正しく構築するにはどうすればよいですか?私はGoogleに関連するものは何も見つかりませんでした... – benjisail

関連する問題