Soruyu sorma şekliniz (ve iki alternatif önerme), tek endişe, driverId'in araç oluşturulduğu sırada hala geçerli olmasıdır.
Bununla birlikte, sürücü silinmeden veya başka bir sürücü verilmeden önce driverId ile ilişkili sürücünün silinmediğinden (ve muhtemelen sürücünün başka bir arabaya atanmadığından da endişelenmelisiniz (bu, etki alanı bir sürücüyü yalnızca bir araba ile ilişkilendirilebilir).
Doğrulama yerine ayırmayı öneririm (varlığın onaylanmasını da içerir). Daha sonra, hala tahsis edilirken silme işlemlerine izin vermeyeceksiniz, böylece inşaat sırasında eski verilerin yarış durumuna ve diğer uzun vadeli sorunlara karşı koruyacaksınız. (Tahsinin, tahsis edilen işaretleri doğruladığını ve işaretlediğini ve atomik olarak çalıştığını unutmayın.)
Btw, @ PriceJones ile hem araba hem de sürücü arasındaki ilişkinin muhtemelen arabadan ya da sürücüden ayrı bir sorumluluk olduğunu kabul ediyorum. Bu tür bir ilişki sadece zaman içinde karmaşıklık içinde büyüyecektir, çünkü kulağa bir programlama problemi (sürücüler, arabalar, zaman dilimleri / pencereler, ikameler, vb.) Gibi gelebilir. kayıtları ve güncel kayıtlar. Bu nedenle, kendi M.Ö. düpedüz değerini hak edebilir.
Tahsis edilen toplam varlıkların BC'si içinde veya ayrı bir BC içinde, örneğin otomobil ve sürücü arasındaki ilişkiyi kurmaktan sorumlu bir tahsis şeması (boole veya referans sayısı gibi) sağlayabilirsiniz. Birincisini yaparsanız, arabaya veya BC sürücüsüne verilen (geçerli) silme işlemlerine izin verebilirsiniz; ikincisini yaparsanız, araba ve sürücü BC'lerinden silinmeleri önlemeniz ve bunun yerine araba ve sürücü ilişkilendirme zamanlayıcısını göndermeniz gerekir.
Ayrıca, BC'ler arasında bazı tahsis sorumluluklarını aşağıdaki gibi bölebilirsiniz. Otomobil ve sürücü BC'nin her biri, bu BC ile tahsis edilen boolean'ı doğrulayan ve ayarlayan bir "tahsis" şeması sağlar; tahsis boole değeri ayarlandığında, BC karşılık gelen varlıkların silinmesini önler. (Ve sistem, araç ve sürücü BC'nin yalnızca araç / sürücü ilişkilendirme planlamasından BC tahsis edilmesine ve yer değiştirmesine izin verecek şekilde ayarlanmıştır.)
Otomobil ve şoför çizelgeleme programı, şimdi ve gelecekteki bazı zaman periyotları / süreleri için otomobille ilişkili sürücülerin bir takvimini tutar ve diğer BC'leri sadece planlanmış bir otomobilin veya sürücünün son kullanımında bildirir.
Daha radikal bir çözüm olarak, otomobil ve sürücü BC'lerini sadece ek tarihsel kayıt fabrikaları olarak değerlendirebilir ve araç / sürücü ilişkilendirme zamanlayıcısına sahiplik bırakabilirsiniz. BC arabası, VIN ile birlikte aracın tüm detaylarıyla birlikte yeni bir araba üretebilir. Otomobilin mülkiyeti otomobil / sürücü birliği zamanlayıcısı tarafından yönetilir. Bir araba / sürücü derneği silinmiş ve arabanın kendisi yok edilmiş olsa bile, arabanın kayıtları tanım gereği hala MÖ araçta mevcuttur ve tarihi verileri aramak için MÖ aracını kullanabiliriz; araba / sürücü dernekleri / sahiplikleri (geçmiş, şimdiki ve potansiyel olarak gelecekteki programlanmış) başka bir MÖ tarafından ele alınmaktadır.
Driver.delete
olmamalı. Asla agregaların yok edildiği bir alan görmedim. AR'leri etrafta tutarak asla yetim kalmazsın.