Build from Scratch or Modify Northwind?

GBalcom

Much to learn!
Local time
Today, 09:08
Joined
Jun 7, 2012
Messages
460
I'm a bit of a newbie (6months of learning on my own, plus a few classes) who has only made 5 or 6 ad-hoc databases for very specific tasks (linking to existing SQL databases, etc.)....I now have my first chance to make a "complete" systematic database. (My dad is starting a 1 man auto repair shop)

He will need the following:
  • Contact management
  • Invoice reports
  • Inventory
  • labels (for mailing list to customers)
  • monthly business reports
  • perhaps a visual dashboard

I want this to be a learning experience for me, as my goal is to be able to learn enough to do side work in access. So, with all this in mind, should I start from scratch or take an sample (such as northwind) and modify it to my needs?
 
The stated needs cover many rather different areas. For starters, I would recommend to focus on one. The one with the most business benefit and not too much complexity (beneficial but very complex is for later). Grab a sample (from microsoft templates) and complete it to your dad's satisfaction. Loik at more samples and add functionality later.
 
Thanks Spike for getting back to me....

I looked at the Database models in the sticky for this forum, and noticed they have one for auto services.....I'll start with that, and add the other components one at a time after that is complete.
 
Ok, I started using the base model I found for the car service, and have designed the tables for the primary function (car services) . (attached mdb). It appears though that I need another table, one for the details of the service bookings....

I was expecting a master-detail relationship for the service booking so I can show it as such on an form/subform and on an invoice. Is this what is needed or am I missing something?

Thanks,
Gary
 

Attachments

The model may be a good start. If you look at the Facts associated with the model at the databaseanswers site, you'll see it isn't very detailed.

When you mention Invoice, I think you will have to add to your model. It would seem to me that you will also need a list of services (I'm sort of surprised it wasn't in the original business facts) including such things as --
-oil change
-brake replacement
-muffler replacement
-transmission overhaul
--etc. whatever the things are that get done at the autoShop.

So when you make a Booking(WorkOrder) for a Customer who has an Automobile with Make x and Model Y you can include the Service(s) to be Performed and the Mechanic who is assigned and based on time and or jobCost you can determine the details of an Invoice. Based on other processes in the business you will know whether to accept credit/Debit card (Payment). It's just not clear yet how much of this is in scope for your database.

Not trying to confuse, just wanting you to see a bigger picture. You don't have to build it all, but like an artist's concept of a new building, you have the pieces in some sort of conceptual/logical model. And this way the pieces fit together however loosely. You can build the pieces that are priority, and know that what you build will fit the bigger picture / model---- if you decide to automate more in future.

You may want to review the models for Customer and Orders etc.

Good luck.
 
Thanks Jdraw!
That was exactly the type of feedback I was hoping for. I will add two more tables (to start with). One for "Services", and one for "BookingDetails".

One thing I'm lacking is a clear picture of the development cycle for a database project.....How do you usually start something like this....Should I try to get a clearer picture with the tables and relationships first, then begin the forms, or start introducing forms now?

Thanks,
Gary
 
I have written a paragraph about the business and gone through that, and refined/expanded/adjusted until I get a better picture of the things I'm dealing with and how those fit together (are related).

I like to create some sample data both good and bad. Helps me clarify what it is I'm trying to do.
Then create a data model often on paper, and work through the data and see if the model supports it, or has issues. The secret is to record the issues and reconcile by either adjusting the model ( or refining the test data if you've found something new).

We used to do this with some made up transactions, then played "stump the model" where others would run the data against the model and point out issues. The issues often help you understand intricacies in the data that were never defined. It's an iterative process -- any issues, go back and do the tests against the model until no issues are found.

There is another thing with forms etc. In the old days we called it "stub processing". You have a form with buttons etc. The only thing in the button click event at this stage is just display a message eg "Button was clicked -- data editing/vetting process goes
here" or "Open Form CustomerDataEntry goes here".. minimal info but you start to get a flow worked out, and you can go back and expand upon those "messages".
As you get into data validation , a message like "validate State and Zip goes here"...
Build stubs, and as you move forward, you put some flesh on the stubs.

If you're working with a client, you can go through major processes by means of stubs fairly quickly and get a lot of feedback as to how the "fleshing out" should be done ( from the client's perspective). Too often I've seen systems that were built by programmers --- not designers and with little to no Client involvement,

Get your client involved. Listen to the questions and feedback. Clients often know more about details than they think.

Anyway enough of a soapbox for now.

One thing that I have found repeatedly is that people really don't know/understand their data. Purchase Order, pick list, bill of materials.... use various terms for the same concept and never define what something is suppose to represent. Better to take a few minutes (helpful with documentation and maintenance later) and define the table/entity in 3-4 lines and record it -- add it to the documentation/help system.

It helps when separating things like Client, Customer, Applicant - when you define/describe them in detail it soon becomes apparent how a Customer differs from an Applicant etc.
 
I want to add some comments to jdraw's, in response to your question:

Should I try to get a clearer picture with the tables and relationships first, then begin the forms, or start introducing forms now?

Theoretically, you'd prepare your entire table structure prior to getting into forms, because, theoretically, that is the most efficient approach.

In practice, I would repeat my previous advice - make a small bit work, make it operational, and then proceed from there. Not all designers and users can work at an abstraction level that would allow a full design to be develeped before getting the app into operations. And so what? Since you are doing this for your dad, and also learning how access ticks, take it easy. Make one bit operational - get feedback from the user, make alterations, get feedback, and then add a new chunk of functionality.
 
I agree with spikepl - that was part of my comments on stubs and then fleshing things out.

The whole process is iterative -- listen -build -- discuss/refine.
 
Thanks alot guys...

I did some more work on it tonight, adding the two tables I talk about above, plus a WorkOrderStatus table to populate the combo box.

It's pretty funny that right now I'm both a developer of a database, and a client of someone developing a program (bridge out of his software to another one we use at work).

"The whole process is iterative -- listen -build -- discuss/refine."

Well said....I tried so hard in the begining to define for him exactly what it was we were looking for, complete with screenshots, and Data X goes into Column Y, etc.

He's a career programmer who seems to really know his stuff. We laid out all in an agreement of front (specification book). We're nearing the end of the project now, and with only (hopefully) 4 revisions, our work really paid off.

I was really concerned as the scope did morph a bit, but he took it all in stride. I guess that's the way you have to get after 30 years of this....LOL
 
ok, I'm making some real headway on this db...but I have a few more questions.

I'm using Access 2010, and have chosen to use a 2 tier, horizontal navigation form. On the first upper tier tab I have "customers". Underneath customers I have "Contact Information" and "Vehicles". These are subforms I have previously created and now have attached. I would like the contact information record to filter the information for the "Vehicles" subform via the customerID, which is in both tables.

when I try to use the following SQL query for the record source, it gives me the following error:

SQL:
SELECT tblCars.VehicleID, tblCars.PlateNumber, tblCars.YearBuilt, tblCars.MakeID, tblCars.ModelID, tblCars.EngineSize, tblCars.MainDriver FROM tblCars WHERE (((tblCars.CustomerID)=[Forms]![frmCustomers]![CustomerID]));

Error:
"Enter Parameter Value for "[Forms]![frmCustomers]![CustomerID]"

I'm sure I need to use something else here instead, but I'm unclear as to what....Do I need to reference that it is a subform somehow?
 

Users who are viewing this thread

Back
Top Bottom