I'm using Xano as my database management system.
Here’s how my website content is structured:
- Company (first level type)
-- Division (second level type)
--- Team (third level type)
---- Employee (fourth level type)
----- Review (fifth level type)
In other words, each review belongs to an employee, each employee belongs to a team, each team to a division, and each division to a company.
Each of these types has specific information (table columns). For example, a company has a name, an address, an industry, etc. The “employee” type has the most specific information (table columns): personal details, job details, notes, etc. The "Review" table may contain a lot of data too: date, text, tasks, etc.
Now, as an example, let's come up with some numbers. Let’s say we have:
A total of 100 companies
5 divisions per company
5 teams per division
10 employees per team
20 reviews per employee
In this example we would have in our database:
100 companies
500 divisions
2,500 teams
25,000 employees
5,000,000 reviews
I’m a bit worried about the size of these last tables; here, we’re talking about 100 companies resulting in 5 million reviews—already a big number; I let you imagine what they would be if the number of companies were to double). I’m even more worried by the fact that the “employee” and "review" types are to contain the most data (table columns). So the amount of data in these two tables alone could be absolutely huge.
So far, I’ve opted for a normalized database structure, meaning that each N level type belongs to its parent (N-1 level type). But I'm worried about size and scaling issues.
Would it be reasonable to have a different set of tables for each company?
If not, what other strategies should I consider?