Starting out...

jeo

Registered User.
Local time
Today, 18:11
Joined
Dec 26, 2002
Messages
299
:confused: I’m trying to figure out the best way to implement a database.
It will contain information about all projects (which there might be 10, 20, 30 of them at one time) as well as all of the staff information as well.
Staff information will contain staff names, their expertise, dates when they are doing something, their functional areas(which one person could have 2-5 different functional areas assigned to him/her).
All these should remain on the Project_Name level.
All the staff names and all functional areas, dates, erc should somehow be connected to a single project.
Is this something that doable at all?
Any ideas as to how to go about implementing this monster would be greatly appreciated.
I really want to start out on the right track, rather than starting something and later re-doing it due to the lack of my expertise in this.
Thanks.
 
First of all, you need to create your tables. Do it on paper, not in Access. That way, you are sure not to implement to fast and make mistakes.

As far as I understood your request, you nead a table for your projects (tblProjects), one for your staff (tblStaff) and one for the connection between the two others (tblStaffProjects).

The tblProjects should contain:
- A primary key (use autonumber if you don't have any)
- Any other informations not related to the staff

The tblStaff should contain:
- A primary key (Do not use the names, because one day you might have two John Smith working there) An employee ID number is good.
-Any other informations not related to the projects

The tblStaffProjects should contain:
-The primary keys of tblProjects and tblStaff (here named Foreign keys)
-Any other informations related to the staff AND to the projects.

I strongly suggest you to make a search for «Normalization» before transfering your work from the paper format to the Access format. It will prevent you from «re-doings».

Good luck!
 
Thank you so much!
This will definetly be a big help!
 
One more thing...that i'm not sure about is how do i tie multiple Functional Areas to one resource?
Should this be a separate table and if so, how would I connect it?
I don't think I want to create all functional areas next to 1 person, there are just too many and this table would have many columns, rather than rows.
 
Not sure I understand your request correctly (Sorry, but English is not my first language).

It sounds like you need these tables instead:
tblProjects (as described above)
tblStaff (as described above)
tblFunctionalAreas that should contain:
- A primary key
- Any other informations not related to the projects nor the staff.
tblFunctionalAreasProjects that should contain:
- The keys of tblProjects & tblFunctionalAreas
tblAreasStaff that should contain:
- The keys of tblFunctionalAreasProjects & tblStaff

I might be wrong as I had problems understanding your post.
 
Thank you for all your help.
I will try what you suggested and go from there.
Thank you, again.
 
Jeo, the tone of your question tells me you are relatively new to Access. I can help you with a mind-set issue that you need to know when designing ANYTHING SUBSTANTIAL in Access (any version of same).

{Put on ol' perfessor hat with the square, flat top and less-than-new gold tassel}

When you are designing something for a business, you need to start from the detailed business work-flow model. Newman's advice is therefore spot-on regarding a starting point. I always tell people to use a white-board and sticky notes. Or a smooth wall that isn't cloth-covered.

What you do is identify business entities. Some things already named that qualify for a set of notes are your projects & your people. Let's take the case where you have many projects and many people, but there are never enough to go around, so some folks work more than one project, and some projects are big enough to need more than one person assigned. Here is how you do this on paper.

You write down (on the sticky note) all the data you have about a person that does not involve any other business entity. Ditto for projects. Arrange them on the wall in columns. OK, two tables, each distinct note is a record in one of the tables.

Now you find that you need to identify the project that a person works on. But my rule said to not write that on either the person note or project note because that would be mixing the purpose of the note. So what you do is put some smaller sticky notes in another column between the two original columns, with the project name and the person name for each assignment.

Voila - you have just "discovered" the Assignment table. And it is an example of what we often call an intersection - the set of projects intersects the set of people through this intermediate table. Now, in techie terms, what it does is allow you to implement a many-to-many relationship indirectly, which you need to do in this case 'cause Access only supports one-to-one or one-to-many. And the bit about "keeping a table pure" is actually just "normalization." You can look up that term in your help files to get a more formal definition.

Let's take a look at something else that might happen. Since you are doing projects with multiple people and you probably have some sort of charge system to account for the costs, you need to know how much time each person charged to a project. The Assignment table can help you identify whether the charge was legal, but here is where another "purity" issue might arise. (Another type of normalization.)

If you have to write anything on a sticky AFTER YOU HAVE PLACED IT, you might be adulterating the purity of the table. TIME is something that should not appear in a person record or a project record (other than perhaps "start of employment" for a person or "contract awarded" for a project.) Remember, even though you don't always think of it this way, TIME is a separate resource, 'cause you make your customers pay for it.

If you have a time-based detail for someone or something, you need ANOTHER table that depends on those things plus TIME. So to track time spent by a person on a project you might consider a table that lists the person, the project, the time of the charge (you can pick start or end, it is up to you), and the number of hours - and this would be SEPARATE from the simple assignment table 'cause that doesn't involve time at all. (You could use the assignment table to validate a charge, but not to track it.)

Now, go through and identify other business entities, resources, etc. Keep them pure. Where an intersection occurs, consider another intersection table. The assignment was two-way, but there is no reason you couldn't have three-way, four-way, or n-way (other than a limit of I think 10 indexes for sorting purposes.) In general, when you have an intersection table that has data from other tables, you have a many (intersections) to one (resource) type relationship. So this is how you often define relationships.

If you have a relationship identified in this way, Access works better when you define the "one" side of the relationship to have a primary (i.e. unique) key to identify it. So for a person, you might have an employee ID number, but for a project, you would have a project/contract number as appropriate to your business. This is how you determine what to use as keys. Any time you have an intersection and it includes data from another table, there is a good chance that the data from the other table should be in a key.

OK, here is where things get trickier. Now define actions to be performed on those items you have identified. Don't be surprised if you find that to perform the action and to still keep the tables pure, you have to define another table somewhere. It happens, and when it does, it is a GOOD thing. Because it means you have identified another process within your business dataflow model.

These actions will become queries, reports, forms, or - sometimes - VBA modules required to implement the Access equivalent function.

This is just an overview of the project analysis phase of an Access implementation. It is one man's view on how to approach this sort of thing in a systematic way. I hope it helps.

{taking off ol' perfessor hat}

Good luck!
 
Thank you!
I loved the post! I did feel like I was back in college and it actually brought a big smile to my face :D , so thank you!
I will start with this new flow process asap and I know that I will be able to find more help from people like you, who are always willing to take their time and help.
 

Users who are viewing this thread

Back
Top Bottom