大企業向けのWebベースのアプリケーションを構築していますが、データベースの部分について質問があります。まず、状況を紹介しましょう。
外部キーに接続されているテーブルは4つあります。
表1:ロードリスト
roadlist (roadListNumber, vehicleId, driverId, date, start, end, fuel,...)
- roadListNumber-primaryKey
- VehicleId-foreignKey
- driverId-foreignKey
表2:ドライバー
drivers(driverId, firstName, middleName, lastName, and so on...)
- driverId-primaryKey
表3:車両
vehicles(vehicleId, group, type, model, gpsDevice, and so on...)
- VehicleId-primaryKey
表4:cargo_zones
cargo_zones(zoneId, name, permiter, area, latitures, longtitudes, and so on...)
- zoneId-primaryKey
表5:roadLists_cargoZones_mapping
roadLists_cargoZones_mapping(roadListNumber, zoneId, spentFuel, tkm, mcm,...)
- roadListNumber-foreignKey
だからここに問題があります:
ドライバーテーブルからドライバーを削除すると、ロードリストテーブルの値がNULLに設定されるか、制約に基づいて行全体が削除されます。最初のケースでは、NULLに設定されている場合、誰かが特定の日付のすべてのレポートを一覧表示すると、そのIDがドライバーテーブルのどの行にもリンクされていないため、勤務中のドライバーの名前を確認できなくなります。秒の場合、行全体がロードリストテーブルから削除されると、システムは重要なデータを失います。
では、このような状況にどのように対処すればよいでしょうか。