The main entry point is the organisation, which is basically identified by its domain name. When a user connects to the application, the DNS name used in the URL is interpreted by the application to select the organisation.
In an organisation, you can define section. In our example, the CNHC organisation, there is sections like diving, swimming...
Of course, an organisation also have members, along with their personal information such contact and address.
An organisation is most of the time organised by exercises. An exercise is a time interval, often a year. In our example, an exercise runs from July 1st to April 30th of each year.
Along with section, it is possible to define categories and "persistent" elements that are defined outside an exercise. An element can be defined with a list of possible values, with multiple choice or not.
Section elements can also be defined for a given exercise. You can also define shifts on a section for a given exercise.
When an existing or new member registers, it defines a content, or a choice, for each element, a category and shifts registration.
All elements that define a price are added and it is therefore possible to record payments.
There is 3 types of tables:
Tables are named using their type, an underscore '_', and a name that only contains letters and numbers. Using Regular expressions, it must validates:
[USD]{1}T_[A-Z0-9]{1,29}
Columns names are composed of the following, separated using the underscore character:
XXX_ID XXX_CD XXX_DES XXX_VA_NAME XXX_NU_AGE XXX_AM_PAYMENT XXX_DT_BIRTH XXX_BL_MYFLAG