Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm developing a site for a potential customer who will need a lot of features for members and the various roles they will have, but also wants to have confidence in the "database". It is this latter item that makes them want to purchase a canned system from someone "established", that is both rather expensive, and is generic / not as customizable to what is needed.

Do you have any thoughts or ideas on what I can do to inspire confidence in them that the database will be solid? I've thought about generating test data to fill the database, doing database backups, and readily being able to switch between database, and ?

I'm implementing the web-site using Grails and am currently using a MySql database. Customer is very small ... just worried about the scenario of their stuff really "taking off", becoming large fast.

I guess I'm just looking for high level thoughts from some of you experts out there (but specifics/references don't hurt either! :-)

Thanks, Ray

P.S. The Grails Security Core and UI plugins look really cool for all the user / role / security stuff, got all that plugged in and working in a couple hours yesterday ... thanks Grails framework and plugin developers!!

share|improve this question

migrated from stackoverflow.com Aug 25 '11 at 1:45

This question came from our site for professional and enthusiast programmers.

    
The last project I worked on, I took an email that was sent out by their current CRM software, then managed to inject to retrieve a lot of sensitive information. If it's an option, show them that the other software is inferior in some way. Since being able to gain access to information I clearly should never of had (to this particular client), I've never had problems when suggesting how we should implement something. :) –  Laykes Aug 24 '11 at 17:16
    
You'll never hit a home run or get everything 100% correct the first time around so, plan for errors and ways to catch them before someone else does. –  Michael J. Lee Aug 24 '11 at 18:29
    
I like your comment Michael, thanks –  Ray K Aug 24 '11 at 18:50

2 Answers 2

if I was the customer here, I'd be worrying about your database design skill the most, and not as much about backups. You can change/improve backup procedures the day before it goes live, but... if the site becomes slow, has bugs, is difficult or slow to implement new features they will have wasted their time and money.

When you hire someone to write custom software for you, you are making a long term investment in that software and resulting data. If the tables design is awful, then you end up with a "crappy legacy" application that is hard to support, maintain, and add features to. How many times do your see a crazy question on SO and the root cause is because of some fundamental table design problem and the 10 hopes needed to jump through to work around that?

share|improve this answer
    
Thanks KM, you've encouraged me to keep studying DB design until I understand the issues more .. will need to devote a portion of my time to that subject. If there are any books you particularly like, please do let me know. Thanks again –  Ray K Aug 24 '11 at 18:58
    
@Ray K, see this: How should a programmer learn great database design? –  KM Aug 24 '11 at 19:04

Their concern is probably justified although the product they are looking at is probbaly not very good from a data perspective either (I've sadly worked with a lot of COTS products through the years).

In the first place, from the content of your question, you clearly don't understand database design issues well enough to be designing one.

First you need to find out what their concerns actually are. Most clients don't care about changing the db backend. They are responsible for setting up the backups generally. And flexibility is the kiss of death in database development. Fast is far more important than flexible. A good database designer should be able to design at least 95% of the needs without resorting to flexible structures.

Possible concerns:

Is my data going to be secure? Show them you have a plan for encrypting personal data and that you understand how to avoid SQL injection attacks. Let them know you understand database permissions and security.

Will it perform fast enough? Show them you have expertise in high avaiability, high performance database design. Such expertise generally takes about ten years to get and does not involve using automated tools to generate your database.

Who will I get support from if you go out of business? Using an established COTS product gives reassurance that their product will still be supported next year.

How am I going to get my existing data migrated to your system? Do you have a migration plan built or expertise in doing migrations - I guarantee the COTS product does.

If they have a concern about your ability to build a database that can grow as their user base grows, show them the stats on the size your db backend can get to. Show them how you have designed the database structure for partioning as the number of records gets larger. Show them that you are planning to test under load and with large amounts of test data to prove that the system can perform well past the first year of operation. Show them how you intend to make sure the data retains integrity over time. Show them basically that the database isn't an afterthought (to most busnesses it is more critical than the application) and that you intend to apply the same level of professionalism to the datbase design as to the application design.

share|improve this answer
    
Thanks, yah I am growing in the database skills area, also reading a book to learn more about DB design issues and contraints. I think your comments on finding out their exact concerns and also security concerns are very good, thanks. They are a single person company, perhaps a little larger with some help / support they are getting, and worried about the case where their product / service "takes off". In that case, all the sudden the database would need to have various good performance and robustness needs. But right now they only have a few potential customers, so it is finding balance. –  Ray K Aug 24 '11 at 18:53
    
Thanks too for your thoughts / comments on COTS products. I've been looking at some good MySQL tools for db migration. Fortunately my step-brother has been developing e-commerce sites for people / companies a long time, so I can get some help from him too in a pinch. –  Ray K Aug 24 '11 at 18:55
1  
@Ray K, read some books on performance tuning as well and SQL antipatterns. If you don't know how to create a well performing design chances are you won't create one. Databases need to be designed from the beginning for performance. Truly. –  HLGEM Aug 24 '11 at 19:00
    
HGLEM, awesome, thanks. Bought one book on DB design but I think it is too basic. Thanks for pointing out the term "SQL antipatterns" -- this "term" looks like it gets right to the heart of the matter. –  Ray K Aug 24 '11 at 19:06
    

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.