Hello all my fellow database aficionados. I am in the midst of developing a campaign management database and have a normalization issue to put out for debate and input.
I'm wondering about the best way to keep track of individuals, companies and donations. My intial idea was:
tblPeople
PeopleID (PK)
FirstName
LastName
Address1
Address2
City
State
ZipCode
PreferredContactType (FK - tblContactInformation)
tblContactInformation
ContactID (PK)
PeopleID (FK - tblPeople)
ContactType (FK - tblContactCodes)
ContactInfo
tblContactCodes
ContactID
ContactDesc (hmphone, wkphone, email, cell)
tblCompanies
CompanyID (PK)
CompanyName
Address1
Address2
City
State
ZipCode
PrimaryContact (FK - tblPeople)
tblDonations
DonationID (PK)
DonatorID (FK - this is where I started to rethink design)
DonationDate
DonationAmt
DonationTender (FK - tblTenderTypes)
tblTenderTypes
TenderID
TenderDesc (visa, cash, check)
tblReferral
ReferralID (PK)
ReferredPeopleID (FK - tblPeople)
ReferredByID (FK - tblPeople)
When I got to tblDonations and started thinking about how to include both tblCompanies and tblPeople as the FK to DonatorID, and decided I would ask my esteemed colleagues how they would handle the situation.
Should I just have one table - tblContact and store both companies and people? Although thinking about it, I may even have to be able to separate corporate donations from personal contributions for campaign reporting requirements. If so, should I have two fields in tblDonations one to store PeopleID and one to store CompanyID? Or maybe add a field to the existing tblDonationonationType as a FK to tblDonationCodes that indicates whether it's a personal contribution or a corporate?
Thanks for any input!
leslie
I'm wondering about the best way to keep track of individuals, companies and donations. My intial idea was:
tblPeople
PeopleID (PK)
FirstName
LastName
Address1
Address2
City
State
ZipCode
PreferredContactType (FK - tblContactInformation)
tblContactInformation
ContactID (PK)
PeopleID (FK - tblPeople)
ContactType (FK - tblContactCodes)
ContactInfo
tblContactCodes
ContactID
ContactDesc (hmphone, wkphone, email, cell)
tblCompanies
CompanyID (PK)
CompanyName
Address1
Address2
City
State
ZipCode
PrimaryContact (FK - tblPeople)
tblDonations
DonationID (PK)
DonatorID (FK - this is where I started to rethink design)
DonationDate
DonationAmt
DonationTender (FK - tblTenderTypes)
tblTenderTypes
TenderID
TenderDesc (visa, cash, check)
tblReferral
ReferralID (PK)
ReferredPeopleID (FK - tblPeople)
ReferredByID (FK - tblPeople)
When I got to tblDonations and started thinking about how to include both tblCompanies and tblPeople as the FK to DonatorID, and decided I would ask my esteemed colleagues how they would handle the situation.
Should I just have one table - tblContact and store both companies and people? Although thinking about it, I may even have to be able to separate corporate donations from personal contributions for campaign reporting requirements. If so, should I have two fields in tblDonations one to store PeopleID and one to store CompanyID? Or maybe add a field to the existing tblDonationonationType as a FK to tblDonationCodes that indicates whether it's a personal contribution or a corporate?
Thanks for any input!
leslie