I’m working on making a consumer CRM system for my boot-strapped startup, where we’ll use MySQL. We’re moving from an old paper and pen method of tracking leads and referrals, to a digital method for our dealers.
The database will have a standard fields, like lead name, spouse, jobs, referral type, referrer, and lead dealer. This is easy, almost child’s play.
Now is the part I’m having a hard time figuring it out. I want to track all the attempted contact dates and responses, and appointments that have been set or reset. The system is going to be web-based, with the front-end in PHP.
I thought about doing nested tables, but I don’t want to use Oracle or PostgreSQL, as I like the familiar setup of MySQL.
For the sake of feasibility, say I have 4,000 leads, and each lead is going to be called on average 30 times. So I’ll have 120,000 data points to track.
Would it be advisable to:
- Make a two dimensional PHP array in the field, to keep track of these metrics.
- Have a contact table with all 120k in it, that the application pulls when these metrics are needed
- Have a contact table for each lead, which keeps track of all needed metrics
I would make one table for contacts. Add a column to record whether the contact was successful or not.
I would also use MySQL’s table partitioning by lead, if many of the queries will be to report on specific leads.
But I second the comment from @Bryan Agee that you should consider carefully before implementing a CRM system from scratch on your weekends.