ドライバー予約システムのデータベースを作ってみました。ここに簡単な詳細があります:
これらの詳細を使用して、ER図とグローバル関係図を作成しました。
Bookingの総支払い属性がDriver.baseRate + (Vehicle.hourRate * Booking.hour)
のような派生属性であることに気付きました。
SELECT
を使用してその列を単純に表示することもできますが、後でtotalPayment値を使用しようとする場合(クライアントの合計使用量などを取得する場合など)はどうすればよいですか? DriverとBookingを接続してから、hourRateとbaseRateのコピーを外部キーとして配置し、それらから派生属性を計算する必要がありますか?私はこれについて調査しようとしましたが、多くの例では、同じエンティティ/テーブルの属性を使用して計算することにより、派生属性を説明しました。
そのようにその場でtotalPayment
を計算するアプローチで私が見る1つの問題は、Driver.baseRate
またはVehicle.hourRate
は後で変更されるため、以前に計算された値を再現できませんでした。
別のテーブルでtotalPayment
を追跡するか、Booking
テーブルにマニフェスト属性として保存したいと思います。そのテーブルにデータを入力する場合でも、SELECT
ステートメントから計算された値を使用できますが、これらは計算された特定の時点でのみ有効です。
これらのすべての値(特にtotalPayment
)は簿記に影響を与え、最終的にドライバーに支払われる(されていた)ことに注意する必要があります。
簿記、およびドライバーに支払われたものは、いつでも一貫性を保つ(そして維持する)必要があります。
あなたの質問のタイトルに返信するだけです:UML 2.5のP. 147は次のように述べています:
9.9.17プロパティ[クラス]
...
isDerived:ブール値[1..1] = false
プロパティが派生するかどうか、つまり、1つまたは複数の値を他の情報から計算できるかどうかを指定します。
{isDerived}
プロパティ名の後。