Design a software system (produce relational database design & object model)

Job ID: 32387111

Budget: $30 – $250 USD

Design the following software system that models a company with employees.
• An employee may or may not have a manager, and may or may not have subordinates.
• If an employee does not have a manager then he must have subordinates.

Each employee is on a pay grade.
There are five pay grades in the company, named PG1, PG2, PG3, PG4, and PG5.

Each pay grade has lower and upper bounds but they may overlap. In particular:
• PG1 starts from $1000 to $2000 per month
• PG2 starts from $1700 to $2700 per month
• PG3 starts from $2400 to $3400 per month
• PG4 starts from $3100 to $4100 per month
• PG5 starts from $3800 to $4800 per month

Every employee can choose to be paid in cash, by check, or through a bank transfer.

Each employee can also move from one payment method to another.

If the employee chooses to be paid through bank transfer, then he must provide the IBAN of his account.

If he chooses to be paid in cash or by a check then he needs to provide his Employee Number and his signature.

Note that a pay grade may permit only certain payment methods.

A manager can upgrade his sub-ordinate salary by a maximum of 10%, which may change the employee's pay grade.

Every month, the payroll team processes the salary payment of every employee.
The software provides a utility (feature) which supports processing the payment.

If the employee is paid in cash or by check, then the software will send an email to employee requesting his attendance to the payroll office.

If the employee is paid by a check then the software will additionally print the check.

If the employee is paid through a bank transfer, then the utility will process the payment and send a confirmation email to the employee.

Since the company values employees’ privacy, financial details of an employee can only be viewed by certain entities. In particular:
• Salary and pay grade information can only be viewed by the employee, his manager, and the payroll team.
• Information such as signature or IBAN can only be viewed by the employee and the payroll team.
• IBAN and Signature information can only be changed by the employee herself.

Please SUBMIT THE FOLLOWING:
1. A relational database design containing: the tables of the database, their columns, and the relations between these columns.
2. The object model containing: the classes of the program, their hierarchies, and how they interact together to satisfy the requirements.



The design will be evaluated according to object oriented design principles, which may give some guidance:
1. Object oriented design principles, e.g. SOLID principles https://en.wikipedia.org/wiki/SOLID
2. Design patterns, e.g. https://en.wikipedia.org/wiki/Design_Patterns
3. Database design principles:
a. https://support.microsoft.com/en-us/office/database-design-basics-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5
b. https://www.codementor.io/@nigelpeck/design-principles-for-relational-data-tzzujzkiq