2016-05-26 7 views
-2

私はpl/sqlでプログラミングを開始していますが、いくつか問題があります。レコードの追加と量の削減

TRAINS: ID_TRAIN, NAME, TYPE 

CARS: ID_CAR, TYPE, SEATS, QUANTITY 

TRAINS_W_CARS: ID_TRAIN (FK), ID_CAR (FK), QUANTITY 

私は電車にいくつかを追加するときに、利用できる車の量が減少している、プロシージャ/ファンクションを作りたい:私のようなテーブルを含むデータベースを作っています。例えば

:私は2クラスで50台の利用できる車を持っている、と私はいくつかの列車にそれらの5を追加した場合、この量は、正直に言うと45

に減少するであろう、私は本当に知りません私はこれまでこれほど複雑なことをしていないので、それについてどうやって行くのか。

答えて

0

私は、あなたが手動または一部のUIのボタンのクリックからあなたのテーブルに行を挿入しているかどうかわかりませんが、あなたは以下のことが可能です。

は、あなたのCARSテーブルで、そのトリガー書き込み中前/後の挿入トリガーを追加します。 TRAINSテーブルで修正する必要があるものは何でも。

3

代わりに、最初に格納しているものの性質を変更することを検討してください。あなたは 0の「鉄道車両」である50「車」の、およびレコードですのレコードを格納しているよう

現在に思えます。したがって、これらのカウントをあるレコードから別のレコードに移動することを手動で追跡する必要があります。これはエラーを起こしやすいだけでなく、混乱を招く可能性があります。ほとんどの場合、車がどこにあるのかという実際の記録はないので、ちょうどカウントがあります。 、代わりに1

1.

  • インクリメント列車の車両数によって

    • デクリメント車の数のようなものを考えてみます。

      は、あなたが次のことを行う必要があり、更新するには続く...

      • CARSテーブルには、実際の車を表す50個のレコードがあります。
      • TRAINSテーブルには、実際の列車を表すレコードが1つあります。
      • CARSテーブルのFKはTRAINSです。これは、車がどの列車に属するかを識別する。この値は、列車に現在接続されていない車では使用できません。

        • 更新CARSレコードのFK:このシナリオでは

      • は、次の行う必要があります。

      これは、成功するか失敗するかの1つのアトミック操作です。ハーフコミットされたデータはありません。欠けている車はありません。

      データ内の各レコードは、「もの」を表す必要があります。数え方や物事の説明ではなく、実際のもの。このシナリオでは、「列車」と「車」は本質的に多対多のものではないため、リンクテーブルは必要ありません。 (車は2つの列車に同時にどのように接続できますか?)

      あなたのデータでモデル化された現実の概念を常に考慮してください。あなたは持っている:

      • 多くの車
      • 多くの議席
      • 乗客
      • など

      ビルドを持つことができる車を持つことができるの列車を、実際の実世界のオブジェクトに基づく関係であり、見たいデータの画面やレポートではありません。これらのレポートは実際のデータから簡単に生成できますが、実際のデータをフラットなレポートから生成することはできません。 (たとえば、現在の設定で列車内にある車の数のレポートを見ることができますが、どれが列車にあるかはわかりません)

  • +0

    高品質のテキストブックの回答!あなたは私の退屈なDBデザインの基礎をリフレッシュしました。ありがとう!!! – shellter

    関連する問題