User authentication on an Intranet - best practices...

I am building an intranet for my company, we have the following departments:

1) Office Managers
2) Telemarketing
3) Corporate

All of these departments are stored using the same information in the same database... for example, if the telemarketer sets an appointment for office 1024 then the manager of office 1024 will see it come up, no other office manager will.  (You get the idea...)

The first from this group is the office manager.  This part of the intranet will allow him/her to keep up with every part of the office from inventory to  sales reps.

The second part is the telemarketing department, this will allow the telemarketers to add appointments and call people to set them.

the third part is corporate, this is simply reports for the corporate side to see all of the offices.

My question deals with users...  In this program, different users will login to different parts of the application.  The directory structure is as follows:

/intranet/officemanagers/ <-- this is where the office managers go
/intranet/telemarketers/ <-- this is where the telemarketers go
/intranet/corporate/ <-- this is where the corporate users go

I would like to have one login box that will send users to the appropriate part of the intranet based on who they are and where they are suppose to go.  My question is this:  Is it bad practice to have ALL users in one table even though they login to differnet parts of the intranet?  For example, a telemarketer has no relation to an office manager (not even in the same office) but they would be in the same 'users' table.  Is this okay?

Or, should i have different tables for each type of user?  Example:  For telemarketers, I would have a table called tbl_telemarketer_users and for office managers, I would have a table called tbl_officemanagers_users  etc... The downside to this would be that I would have to have different login pages for different people, and they would have to be told where to go, instead of

By the way, I am using VB.NET and Microsoft SQL 2000

Please help!  

Thanks in advance,

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Well, I'm not an expert on db normalization by any means, but I would venture to suggest splitting the groups into 3 seperate tables, and using "joins" when you query the tables.  Then the same login script could be used for everyone...

If not, I think the best way to do it in one table is to have a seperate numerical id column based on which level they are (1 for Managers, 2 for Telemarketing, 3 for Corporate)...

That help any?

I can offer you two pieces of advice:

1. I personally am used to braking all the rules when it comes to Web. Dev. so I don't really know which the best way to go would be. I could tell you I've been in similar situations and have gone with both approaches. Both worked fine. I guess is just a question of how much info will you be processing, the amount of users the DB will store, the amount of people developing the app, etc.

2. You question is obviously a DB Q instead of a DW Q. Although here we are used to all sorts of problems, I would highly recommend you ask this were the DB experts are:

Not that this TA isn't filled with professionals, but you will get better theory over there.

Best regards,


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Adobe Dreamweaver

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.