2013-02-10 20 views
7

私はこのデータ構造に何が間違っているのか、どのように改善するのかを尋ねられました。ここでこのデータ構造には何が問題なのですか?

は、データ構造である:ここで

Image

は、私がこれまで持っているものです。

  • 車の価格は車がショールームにある場合にのみ設定されている、それはですそれは車表にNULLデータを格納しても意味がありません

  • 車のテーブルに車の価格を置くために、より理にかなって、それは賭けになりますTERは、これに似たレイアウトを持っている:

    量は、いくつかのショールームは、同じ車の倍数を持っているとして、ショールームにあるか、その特定の車の多くを示すために見出しがある必要があるCar table

私はまだ私は漠然とデータ構造を描画するときに何も何もありません覚えていない、と私は、私は3番目のテーブルを作成する必要があると思うのデータを、繰り返したアップ描いた新しいテーブル?私は本当にわからない。

私はちょうど現在のデータ構造と間違っているものにとヘルプのビットを必要とし、それを改善するためにどのような方法がある場合は、任意のヘルプは大歓迎です。

+0

FWIWは、 'データ構造体'ではない 'データベーススキーマ'を意味します。 – Patashu

+0

@Patashu:スキーマは単なる名前空間です。オブジェクトの集合です。構造はその問題についてです。 –

+0

私たちはそれらをデータ構造であると知っていましたが、そのデータベーススキーマも同様に – user2058186

答えて

8

1つの問題は、Carテーブルに2つの異なるものが格納されていることです。つまり、makeはストアし、モデルを格納します。

ですから、それを分割する必要があり、のようなもの:

はします:カラムはmakename、

モデルmakecode:列makecode(作るための外部キー)、モデル名、modelcode

そして今、ショールームのテーブルをモデルにしか関連しないので、間違ってmakeを参照することはできません。

一つのモデルは、それに関連する多くのショールームテーブルの行を持つことができるので、あなたは意味のある2つのテーブルをマージするので、それらを分離し、そこから行く維持することはできません。

+0

お返事ありがとうございました。あなたが提案した3つのテーブルに行くつもりです:) – user2058186

2

繰り返しデータが間違っているのは間違いありません。

私は、モデルの様々な下位カテゴリーが存在する可能性があるため、「モデル」と「ショールーム」を変更します。 IEゴルフTDI対GTIなど。 ...基本価格(MSRP)はモデルに適用されます。ショールームの状態は価格設定に意味をなさない - 広告されているがショールームやロットではない多くのものがある。

そのデータがサポートしているものだ場合、私はNULL可能列を持つ任意の問題がないと思います。どちらの場合も問題ありません。データの量が多ければベンチマークを行い、ベストなものを見てみましょう。しかし、後で最適化してください。

+0

返信には大変感謝しています:) – user2058186

4

車の構造が車種と車種の両方を格納しているようです。少なくとも警報が出るはずです。フォード、VW、プジョーのような車は自分でMakeCodeを持っています。フィエスタやゴルフのような車のモデルは、独自のModelCodeを持っています。

元の構造では、車のモデルは、ParentCarIdの複製をMakeCodeで作成しています。車種は特定のモデルではなく、ModelCodeParentCarIdにはnullが割り当てられます。

ParentCarIdは意味がありません。車は別の車の子供であるとはどういう意味ですか?代わりに、車は、別のテーブルによって表される別のエンティティであるメイクに属します。また、車にはMakeCodeが含まれていてはなりません。明らかに、メーカーとモデルは非常に異なっており、異なる表で表現する必要があります。

テーブルを2つに分割することは理にかなっています.1つはメイク用、もう1つはモデル用です。その場合、IDNameMakeCodeとなります。モデルは、IDNameModelCodeおよびMakeIdIDの外部キー:Make)を持ちます。

+0

返事に感謝します。私はそれを試してみます:) – user2058186

関連する問題