User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the Database Design section within the Web Development category of DaniWeb, a massive community of 375,193 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 2,200 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our Database Design advertiser:
Views: 548 | Replies: 2
Reply
Join Date: Feb 2008
Posts: 2
Reputation: mcox2005 is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
mcox2005 mcox2005 is offline Offline
Newbie Poster

Database Design

  #1  
Feb 13th, 2008
I'm working on the conceptual phase of modeling a database for a company right now.

I have two considerations:

1) This database will obviously be integrated into a web application, but more importantly it will be a user/pass based system with rights and privileges.

2) I trying to model a scheduling system for a particular business where users can login and register for appointments to have certain things done for them.


I have thought of a couple different variations but I've found many of them to hop from one side of the fence to the other (in terms of difficulty). By this I mean that either one approach will make the coding simpler ... but will make the tables more non-intrinsic and possibly not meeting 4th Normal Form OR the model will make coding a nightmare.

Here is my most recent model:

User
-------
id -> key
pass
privileges

Client
--------
userID -> key
Appointments


ServiceProvider
------------------
userID -> key
Appointments
Services (offered)
Clients

Appointment
---------------
id -> key
time
date
Services (performed)

Services
-----------
id -> key
name

Personal_Info
----------------
userID -> key
fName
lName
Phone Numbers

Phone_Number
-----------------
[composite key]
userID -> key
number -> key


_________________________

Like I said, I'm not even worried about bridge tables or the handling of 1:Many relationships, Just Drafting the Model.


For some reason this design feels "iffy" at best. Something about making the User table have a direct relationship to every table feels wrong ... but if not wrong then dangerous ... because then there exists a dependency for any entry from any table to exist such that there is a corresponding User entry to facilitate it.

Any thoughts, comments, or suggestions?

Thanks,

Matthew Cox
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Feb 2008
Posts: 2
Reputation: mcox2005 is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
mcox2005 mcox2005 is offline Offline
Newbie Poster

Re: Database Design

  #2  
Feb 13th, 2008
Oh, and side note. There is one other thing to consider.

There exists a heirachy within Service_Providers

Owner
Worker

I opted not to use two seperate tables because this would increase programming complexity. ... I would have to implement to determine, in some fashion, wether the person logging in was a owner or a worker ... in that case, I would have If statements all over the place everytime I wanted to do a query. Because I won't intutively know what type of user the person is so therefore, I wouldn't know automatically which table to query.
Not to mention the fact that Owner and Service Provider have almost identical table attributes... in programming inheritence would solve this problem easily ... but I know no way of doing that in DB Design
Reply With Quote  
Join Date: Mar 2008
Posts: 36
Reputation: LeBurt is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 1
LeBurt LeBurt is offline Offline
Light Poster

Re: Database Design

  #3  
Mar 7th, 2008
Here's a few questions in an attempt to clarify your problem:

1) Can a given User also be a Client and a Service Provider at certain times?
2) Inversely, are Service providers and Clients always Users of the system?
3) Was there a reason to put the Personal Info in a separate table from User?
4) Can a User have more than one phone number?

Here's what I see your model might be, before I get an answer to the questions:

User
-------
id -> key
fName
lName
pass
privileges
service_provider_class (owner or worker or NULL if this user cannot be a service provider)
client_class (normal or NULL if this user cannot be a client)

Appointment
---------------
id -> key
Provider_UserID (foreign key: that's the User who acts as the Service Provider)
Client_UserID (foreign key: that's the User who acts as the Client)
time
date

Services
-----------
id -> key
AppointmentID (foreign key)
name

Phone_Number
-----------------
id -> key
userID (foreign key)
number
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

DaniWeb Database Design Marketplace
Thread Tools Display Modes

Similar Threads
Other Threads in the Database Design Forum

All times are GMT -4. The time now is 2:07 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC