Click here to Skip to main content
15,887,135 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I want to create School management ERP kind of Web application.
I dont have much experience but my team can handle all designing and programming aspect.

But I just want know how to handle different school on one website.
I mean I have 'School_A' or 'School_b'. That data should not be shown to each other users.

I have observed many of the web applicaiton like jira and some project management tolls, when user register on to web site they create their sub domain.
Eg www.abc.com\schoolA and www.abc.com\schoolb

I wonder this is the way we should create url!
More over when i am login with my credential system knows on which entity (School_A or School_B) need to redirect.

Secondly on every new organisation register. does system create different database and getting result form that database or database remain same for whole web application and differentiate with unique school ID.

i think this one database might kill permanence when data gets increase for all organisation.

What I have tried:

Create small transactional window application but now i want to online erp.
Posted
Updated 22-Jul-18 20:15pm

1 solution

What you are asking is quite the large task that someone with no experience can't begin to build. I realize you are more wanting to understand how it is built, but if you've got the team to handle this as you say, I would say you are best off asking your questions/working with your team to understand the project that you are attempting to build. After all, they are the ones who need to understand the requirements and are the only ones who will be able to tell you if they can build what you want.

But to answer your basic questions here. What you are asking is whether you should build a Single-tenant vs Multi-tenant application.

Single-tenant meaning 1 customer per instance of your application.
Multi-tenant meaning more than 1 customer per instance of your application.

There are many different ways to go about building an app of this magnitude but based on your additional questions, lets just assume you are going the multi-tenant route.

Quote:
But I just want know how to handle different school on one website.
I mean I have 'School_A' or 'School_b'. That data should not be shown to each other users.


When setting up new "customers" on this platform, you would have some sort of way to tie users to its data so that users of School_A are assigned/tied to data of School_A but not any other customers data. Or you would tie users to a "company" or some level of record that can group many users to one Id. Then on your "customers" table you might have a CompanyId that ties customers to a company. That way, any users tied to a company can only see that companies customers data. (Ex: User A, tied to company B. Company B is tied to School_A so any user tied to company B can only see School_A's data).

Quote:
I have observed many of the web applicaiton like jira and some project management tolls, when user register on to web site they create their sub domain.
Eg www.abc.com\schoolA and www.abc.com\schoolb


There are a number of was to accomplish this. It is best to talk with your team to understand what their capabilities are. You could spin up 1 server per customer but would want to automate this, or just simply have it like your example.

Quote:
More over when i am login with my credential system knows on which entity (School_A or School_B) need to redirect.


See my comments above about associating users to a company. Company might be the wrong term here but if you are going to have many users to a school. You might want to group those users to a Company to make things easier. That way an "admin" of the "company" could then register more users and associate them accordingly.

That or you'd just have to create a Schools to users mapping table that maps user id's to schools. This might not scale well depending on what direction you go with your app.

Quote:
Secondly on every new organisation register. does system create different database and getting result form that database or database remain same for whole web application and differentiate with unique school ID.


I suggest you look more into single tenant vrs multi-tenant applications. If you don't understand this concept then, unless your just asking these questions for your own benefit, your team of developers should understand.

In short, starting 1 DB per customer may not be cost effective if this is a start up but if the data is super sensitive (ex: social security numbers) you may need to be a single tenant application. I don't know your hopes, dream and desires for the long term future of your app so from what I know, I would go multi-tenant.

Quote:
i think this one database might kill permanence when data gets increase for all organisation.


Unless you are using some no name database, 1 single DB/DB server will more than likely be fine. Again, I don't know enough about your app but I highly doubt you'll be pumping enough transactions through this single DB for it to be a problem. But again, this is dependent upon the needs of your app.

Even if it is, there are options for mirroring or hosted options like RDS that take the sys admin of your DB off your hands.

So in short, this is quite the ambitious project to undertake with not much experience. With the broad scope of a lot of these architectural concepts, you should do a lot of research.
 
Share this answer
 
Comments
Shah_23 25-Jul-18 0:04am    
Thank You very much for fantastic explanation .
I have start reviewing about single tenant and multiple tenant.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900