2016-05-06 20 views
-5

私は1つまたは複数の色と相互作用して異なる色を与えることができる1つの色を持っています。これをモデル化する方法はSQlです。SQLの多対多モデリング

答えて

0

は、あなたのDBMSに適切sintaxを使用していますが、この方法で試すことができます。

create table colors ('id', 'name'); 
create table colorMix ('first_color_id', 'second_color_id', 'result_color_id') 

は、あなたが行うことができます:あなたが望むものである

select colors.name from colorMix join colors on result_color_id = id where 'first_color' = '1' and 'second_color' = 2 

を?

+0

MYポイントが2つの以上の色 – Clockwork

+0

があるなら、あなたはおそらく、あなたが次のミッ​​クスのために使用しますことを、最初のミックスからresult_colorを持っているものです。黄色+赤色=>オレンジ色、オレンジ色+青色=>紫色などのように、すべての組み合わせに対して行うので、黄+赤+青=>紫 –

1
Color table 
ID 
ColorName 

Blend table 
BlendID --FK to Color Table ID 
Color.ID --FK to colorTableID 
QTY 
UOM etc.. 

この方法で、別の色を作成する際にブレンドを使用できます。さらに、この方法では、特定の量を混ぜ合わせて所望の色の混合を達成することができます。

ステップ

  1. 「ブレンド」を定義colorIDは、レコードごとに異なるであろうが、この色はblendIDが繰り返されるに注意を達成するためにブレンドに関係を追加カラーテーブルに新しい色を追加します。

color 
1 Yellow 
2 Blue 
3 black 
4 dark green 
5 white 
6 red 
7 maroon 

Blend 
    4, 1 
    4, 2 
    4, 3 
    7, 4 
    7, 5 
    7, 6 

青、黄暗緑色混合物を作るために、ブラック

マルーンは白、赤、暗緑色の混合作ります。

**免責事項:私の混色のスキルは非常に限られた混合結果がどのような方法の形状または形態で色の名前と一致しない場合があります。白黒は右の色ですか?待たずに色合いと色調があるか、色がないか、またはすべての色が...決して得られない...明るい色やペイントの色を混ぜているのですか?心配しないで...私は自分を失った。