need help in architecting a design for a webapplication
-
Hi, I am developing a webapplication(currently), the web application is supposed to simply add data of employees , their will be different types of people(say 10 types of people) modifying the data in the tables of sql server-2005 their will be say around 15-20 different tables with an average of 10 fields per table. By architecture I mean assistance in designing the application so that the application may support 50 simultaneous users interacting with the web application simultaneously, how should my sql be engineered because in future their will be massive entries getting in the database say 50,000 or so minimum in two or three tables. what kind of design should I use to handle such requirements thank you
-
Hi, I am developing a webapplication(currently), the web application is supposed to simply add data of employees , their will be different types of people(say 10 types of people) modifying the data in the tables of sql server-2005 their will be say around 15-20 different tables with an average of 10 fields per table. By architecture I mean assistance in designing the application so that the application may support 50 simultaneous users interacting with the web application simultaneously, how should my sql be engineered because in future their will be massive entries getting in the database say 50,000 or so minimum in two or three tables. what kind of design should I use to handle such requirements thank you
I'm afraid a forum is not where you are going to get a solution to this question. The question is so broad that it is impossible to answer. I can only suggest you hire a consultant to do your design for you or you could employ a senior developer who could do this fairly easily. Alternative you need to get a book on database design. One rule you can start with, never store data more in more than in place (this does not include foriegn keys of course).
Never underestimate the power of human stupidity RAH
-
I'm afraid a forum is not where you are going to get a solution to this question. The question is so broad that it is impossible to answer. I can only suggest you hire a consultant to do your design for you or you could employ a senior developer who could do this fairly easily. Alternative you need to get a book on database design. One rule you can start with, never store data more in more than in place (this does not include foriegn keys of course).
Never underestimate the power of human stupidity RAH
-
Just to add - whatever design you choose, make sure that you include some form of timestamp on your columns so that you can perform concurrency checking when your users update records - that way, you can easily implement a strategy where you choose who manages to update the record, and what messages are displayed if they can't.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
-
Just to add - whatever design you choose, make sure that you include some form of timestamp on your columns so that you can perform concurrency checking when your users update records - that way, you can easily implement a strategy where you choose who manages to update the record, and what messages are displayed if they can't.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
-
Hi, I am developing a webapplication(currently), the web application is supposed to simply add data of employees , their will be different types of people(say 10 types of people) modifying the data in the tables of sql server-2005 their will be say around 15-20 different tables with an average of 10 fields per table. By architecture I mean assistance in designing the application so that the application may support 50 simultaneous users interacting with the web application simultaneously, how should my sql be engineered because in future their will be massive entries getting in the database say 50,000 or so minimum in two or three tables. what kind of design should I use to handle such requirements thank you
3-Tier architecture can be of great help. If you are developing with .NET then this will become 4-Tire architecture: User Interface, Code Behind, Business Layer, Data Access Layer. Do not make the mistake and design your application architecture exactly the same as database. Remember this, which I read in some text somewhere: Object oriented programming is not about normalizing data but normalizing behavior. You know ahead of time you will be interacting with the database so perhaps create utility classes which take a query and execute it, return tables, data readers etc. Store your connection strings in the .config file. The only part of your code which should realize this is a web based application is the User Interface and Code Behind files. The rest of your code should be totally ignorant of whether this is a desktop, web or mobile application. This will help in debugging, maintenance etc. Good Luck!
CodingYoshi Artificial Intelligence is no match for Human Stupidity.
-
3-Tier architecture can be of great help. If you are developing with .NET then this will become 4-Tire architecture: User Interface, Code Behind, Business Layer, Data Access Layer. Do not make the mistake and design your application architecture exactly the same as database. Remember this, which I read in some text somewhere: Object oriented programming is not about normalizing data but normalizing behavior. You know ahead of time you will be interacting with the database so perhaps create utility classes which take a query and execute it, return tables, data readers etc. Store your connection strings in the .config file. The only part of your code which should realize this is a web based application is the User Interface and Code Behind files. The rest of your code should be totally ignorant of whether this is a desktop, web or mobile application. This will help in debugging, maintenance etc. Good Luck!
CodingYoshi Artificial Intelligence is no match for Human Stupidity.
-
CodingYoshi wrote:
Do not make the mistake and design your application architecture exactly the same as database.
Hi Yoshi, can you please explain what you do you mean here? Thanks shank
I have seen people create classes based on database tables but it is not a good practice. For example lets say I have the table s below: Customers Orders Since this is a many to many relationship, to normalize we will create another table called: CustomersOrders This is basically the bridging or link table. Now design classes based on these tables and your design is as below: Customer Class Orders Class CutomerOrders Class You see what I mean. Instead you should have the following classes: Person Customer : Person // If later you need employee you can Employee : Person // Customer should also have an OrderCollection. Remember Aggregation Address // Both the Customer's shipping and billing address can use this CustomerCollection Order OrderCollection You will have classes which have methods for performing CRUD operations on these objects and those classes might call other classes for help. You might have many other properties and methods in your Customer class, in addition to the fields in the database, for example, FullName (First Name + ", " + Last Name), GetPendingInvoices() etc. Do you see now what I mean? OrdersCollection
CodingYoshi Artificial Intelligence is no match for Human Stupidity.
-
I have seen people create classes based on database tables but it is not a good practice. For example lets say I have the table s below: Customers Orders Since this is a many to many relationship, to normalize we will create another table called: CustomersOrders This is basically the bridging or link table. Now design classes based on these tables and your design is as below: Customer Class Orders Class CutomerOrders Class You see what I mean. Instead you should have the following classes: Person Customer : Person // If later you need employee you can Employee : Person // Customer should also have an OrderCollection. Remember Aggregation Address // Both the Customer's shipping and billing address can use this CustomerCollection Order OrderCollection You will have classes which have methods for performing CRUD operations on these objects and those classes might call other classes for help. You might have many other properties and methods in your Customer class, in addition to the fields in the database, for example, FullName (First Name + ", " + Last Name), GetPendingInvoices() etc. Do you see now what I mean? OrdersCollection
CodingYoshi Artificial Intelligence is no match for Human Stupidity.