Projekt relacji kilku tabel

Cześć,

Mam do zrealizowania pewien projekt, system do katalogowania i śledzenia wędrówki sprzętu IT w firmie.
To mój pierwszy projekt gdzie jest więcej niż jedna relacja 1-1 i jeszcze trochę się kręcę.
Proszę abyście rzucili na to okiem, bo czuje ze coś jest nie tak, pod linkiem znajdziecie wstępny rozkład tabel i relacji jakie udało mi się wypocić.
http://dl.dropbox.com/u/6883398/model_diagram.png

Powinno być w miarę jasne o co chodzi, głównym modelem jest klasa Equipment, która ma różne atrybuty, wraz z historią zmian.
Moje wątpliwości dotyczą ostatniej relacji (Equipment <> Event) i raczej brak pomysłu na relacje pomiędzy Event <> User i Event <> Location

Proszę o wskazówki.

  1. Mam nadzieję, że nazwy metod w Equipment są poglądowe, i zmienisz je na poprawne :wink:
  2. nie podoba mi się nienaturalna reprezentacja Equipment has_many locations. powinno mieć has_one, inne przypadki gdy Something has_many :locations to możesz z Tomashem podyskutować :wink:
  3. Być może zainteresuje Cię gem paper trail - nie wiem do czego jest model change, natomiast location i state mógłbyś wtedy wrzucić bezpośrednio do equipment i badać zmiany za pomocą w/w gema.
  4. Innym sposobem, który mi przyszedł teraz do głowy, to model Change z polimorficzną asoscjacją do user/location i state. Change przechowuje wtedy wszelkie zmiany i możesz jakimś before_callbackiem albo observerem zaznaczać te zmiany.

Jasne

Hmm, nie rozumiem, pod jedną lokalizacją może być kilka różnych sprzętów, drukarka, ups itp… nie jest to idealne rozwiązanie żeby znaleźć taki sprzęt?

W change będą przechowywane rodzaje zmian wykonanych na Equipemnt, np zmiana właściciela, zmiana lokalizacji, zezłomowanie itp.

Co do relacji Event <> z User, State, Location to myśle ze pola old_* i new_* przerobie porostu na stringi.