davefwelch
David
- Local time
- Today, 16:23
- Joined
- Jan 4, 2005
- Messages
- 47
About 3 months ago, I created a database in a hurry (I had just started working here) so that I could begin tracking drinking water infrastructure construction projects. Now, I have some time to rethink how I hurriedly put it together so I want to reconstruct it, and add some useful capabilities, especially since we will begin receiving applications for funding for 2010 projects soon and I want to be able to start entering the applications and scoring them.
I've attached my current diagram of relationships and I wonder if someone can give me some advice because I KNOW that the database is not normalized enough. Some explanations of what I need to do.
As you can see, the primary table in the database is the Projects table. Each project is funded with at least one loan, and many with two loans. Each loan portion is listed in the Loans table. By "loan portion," I mean that for example, if project 1 is funded by two loans, then loans 1A and 1B are separate loans in the table. The SUM of their LoanAmount would be the total budget for that project. The LoanID field is part of the primary key for this purpose. I've also design the new database to hold information for all projects going forward, with the ProjectYear being a part of the new primary key as well.
The 5 tables whose names begin with "MSACCESS" are read only tables linked from an external database, perhaps oracle but I'm not sure. These tables contain lots of information about each Public Water System (the entities borrowing the money in each loan) like contact information as well as information about violations to assist us in scoring the new applications.
I think that I am getting rid of the Borrowers table as it is, because it seems that most of the information in there is saved in the "MSACCESS" tables. Annual Water Bill and MHI (Median Household Income) will be imported annually from external sources and will update their own tables. The primary purpose for the borrowers table was to update a reporting database that I am required to post data to quarterly. I think I will make a query that contains this information.
Once a project begins design and/or construction, or actually ANY time after a loan closes for the project, the water system begins drawing down the loan funds via payment requisitions. They generally submit one of these for each month, if they have invoices to pay during that month. Each requisition has lines on it itemizing the expenditures in general terms like Construction, Engineering, Legal & Admin, etc. This is the purpose of the PayReqLines table.
WHEW, that was a lot to write!! Anyone have any advice for me?
I've attached my current diagram of relationships and I wonder if someone can give me some advice because I KNOW that the database is not normalized enough. Some explanations of what I need to do.
As you can see, the primary table in the database is the Projects table. Each project is funded with at least one loan, and many with two loans. Each loan portion is listed in the Loans table. By "loan portion," I mean that for example, if project 1 is funded by two loans, then loans 1A and 1B are separate loans in the table. The SUM of their LoanAmount would be the total budget for that project. The LoanID field is part of the primary key for this purpose. I've also design the new database to hold information for all projects going forward, with the ProjectYear being a part of the new primary key as well.
The 5 tables whose names begin with "MSACCESS" are read only tables linked from an external database, perhaps oracle but I'm not sure. These tables contain lots of information about each Public Water System (the entities borrowing the money in each loan) like contact information as well as information about violations to assist us in scoring the new applications.
I think that I am getting rid of the Borrowers table as it is, because it seems that most of the information in there is saved in the "MSACCESS" tables. Annual Water Bill and MHI (Median Household Income) will be imported annually from external sources and will update their own tables. The primary purpose for the borrowers table was to update a reporting database that I am required to post data to quarterly. I think I will make a query that contains this information.
Once a project begins design and/or construction, or actually ANY time after a loan closes for the project, the water system begins drawing down the loan funds via payment requisitions. They generally submit one of these for each month, if they have invoices to pay during that month. Each requisition has lines on it itemizing the expenditures in general terms like Construction, Engineering, Legal & Admin, etc. This is the purpose of the PayReqLines table.
WHEW, that was a lot to write!! Anyone have any advice for me?