Integralność danych w bazie

0

Witam,
posiadam 3 tablele:

  1. Kierowcy (id, auta_id, firmy_id) - każdy kierowca jest przypisany do 1 auta, ale także do swojej firmy.
  2. Auta (id, firmy_id) - każde auto należy do firmy
  3. Firmy (id i inne dane niezależne)

Problem jest taki, że kierowca musi być najpierw w Firmie, a dopiero potem posiada auto.
Da się to jakoś inaczej zaprojektować, żeby uniknąć ryzyka niespójności danych w polach Kierowcy.firmy_id, Auta.Firmy_id?

Pozdrawiam

1

Kierowcy.firmy_id INT NOT NULL z referencją do Firmy.id
Kierowcy.auta_id INT NULL z referencją do Auta.id

0

A jak powiązać auto z firmą niezależnie od kierowcy? Potrzebne jest drugie pole firma_id w tabeli Auta.

Zrobiłem kontrole w kodzie programu, zastanawiam się czy sama organizacja tabel może być inna, aby wykluczyć powielające się dane.

0
Michałggg napisał(a):

A jak powiązać auto z firmą niezależnie od kierowcy? Potrzebne jest drugie pole firma_id w tabeli Auta.

Zrobiłem kontrole w kodzie programu, zastanawiam się czy sama organizacja tabel może być inna, aby wykluczyć powielające się dane.

Obecnie Auto jest powiązane już z firmą przecież. Masz w tabeli Auto klucz obcy do tabeli Firma.

0

Trudno się wypowiadać jak się nie zna "merytorycznej" strony programu. Może daj jeszcze jedną tabelę POWIĄZANIA z polami ID kierowcy, samochodu i firmy.

0

Zrobiłem kontrole w kodzie programu, zastanawiam się czy sama organizacja tabel może być inna, aby wykluczyć powielające się dane.

Nadmiar danych to w chwili obecnej chyba nie jest największy problem.

Da się to jakoś inaczej zaprojektować, żeby uniknąć ryzyka niespójności danych w polach Kierowcy.firmy_id, Auta.Firmy_id?

Ale czy do czasu przydzielenia auta - Kierowca.Auto_Id - niemożę być null ? To jest przecież naturalny sposób.

1 użytkowników online, w tym zalogowanych: 0, gości: 1