Four classes for one database table?

Hello,

Can someone explain me, please, your concept for implementing the rt-tool?
I don´t understand why you have 4 modules for one database-table. For example:

  • for the table users exists the modules “User.pm”, “User_Overlay.pm”,
    Users.pm” and “Users_Overlay.pm”

Okay, maybe, not all modules are for the table users…
I understand that I can overwrite the Overlay-modules or put new functions on
it.
But why do you seperate between singular and plural? Sometimes it is
documented in the plural-modules that this is a collection of the
singular-module. Also Tickets.pm are a collection of rt-Tickets - thats
logical. 5 seperate Ticket-objects I can put together to a Tickets-Objekt.
That I need, when I will merge two or more Tickets together.
But why I need this with Queues, Transactions or Users?

What are the seperate Modules for? I can use them, but I don´t know how to use
them correctly, optimal and clever.

It would be nice, if someone have the time to write me back and explain it to
me.
Thanks.

Tina