0
のは、私が(ちょうど例として)次のテーブルを持っていると仮定しましょう: このシナリオをリレーショナルデータベーススキーマで解決するにはどうすればよいですか?
vehicle: {n̲a̲m̲e̲, type}
vehicle_type: {n̲a̲m̲e̲} // has 'car' and 'ship'
person: {i̲d̲, age}
container: {i̲d̲, color}
は今、私は別々のテーブルで年間ガス消費量を注意したいです。しかし、車や船舶にのみ有効な属性もあります。車は人だけを輸送し、輸送コンテナはコンテナしか輸送できないとしましょう。
一部は、車や船のいずれかのために意味がありませんが、すべての属性を持つ消費のための1つの大きなテーブルを作成します。
は今、私は現在、考えることができる2つのソリューションがあります。
consumption: {v̲e̲h̲i̲c̲l̲e̲_̲n̲a̲m̲e̲, y̲e̲a̲r̲, p̲e̲r̲s̲o̲n̲s̲, c̲o̲n̲t̲a̲i̲n̲e̲r̲s̲, liters}
複雑さを増す、2つのテーブルを作成しますが、単に有効な属性持つ:私の本当のシナリオでは
consumption_cars: {v̲e̲h̲i̲c̲l̲e̲_̲n̲a̲m̲e̲, y̲e̲a̲r̲, p̲e̲r̲s̲o̲n̲s̲, liters} consumption_ships: {v̲e̲h̲i̲c̲l̲e̲_̲n̲a̲m̲e̲, y̲e̲a̲r̲, c̲o̲n̲t̲a̲i̲n̲e̲r̲s̲, liters}
を、彼らはnull
することができないため、これらの無効な属性が、その後-
のようなダミーの値を持っているでしょうより排他的な属性があるので、ケース2では7つのテーブルのように作成する必要があります。私はまた、消費テーブルのis-a
の関係を考えましたが、実際にはあまりうまく動作しないので、私はそれを避けたいと思います。
この問題を解決する方法はありますか?