I am a webdev. I have just hired a dev. Before that I was alone. Thus, I have to change a bit my organization.

I am looking for the best way to develop on the same database (MySQL). I am considering different options:

  • Get a small server in the office and set an access to this database (actually, this is what we are doing. Performance are poor)
  • Use a big platform like Amazon RDS or Google Cloud Platform
  • Use a small VPS like Linode or Digital Ocean
  • Keep a db on each dev machine and use a kind of syncing/replication

What would be the best way for you?


Do not consider your database a development asset. Instead consider the code an asset. Make all changes to the database through code, have the code checked in into source control. Conflicting changes resolve as source merges. Rails migrations capture this philosophy pretty well. But it can be applied to any platform and any language, eg. Version control and your database.

This approach will solve not only your team work issues, but also deployment, QA, upgrade of live site(s), tracking history of database changes, explain the current database schema and so many more.


Keeping a database on each development machine is best for 'dev' work, and creating a 'qa' database you can both access would beneficial for validating completed work.

This question covers how multiple developers can work on the same database schema at a time.

  • 1
    Thank you Kevin. The point is we need to share some important IDs which can be created during the dev process on one machine or the other. eg : we create a new article in db with id 42. We will override the css for this particular id. How to keep the "42" reference across all dev machines ? – Paul Etienney Jan 13 '14 at 18:22
  • If this is a default data issue you should have a seed script as part of the script(s) to create the database. If this is a runtime issue I'm curious why you're depending on specific values. – Kevin Jan 13 '14 at 18:50
  • The point is I use a CMS which can override templates based on IDs in db. During, the dev I may need new view for a precise ID. I don't know thoses Ids at the beginning of the dev. I know this is not clean, but hey, this is the way the tool is built. – Paul Etienney Jan 14 '14 at 9:00
  • 1
    I would have an update script in source control that both of you can get and run. – Kevin Jan 15 '14 at 5:31

Read Joel Spolsky's "Joel on Software" - revelation to me when I read it, software development as it should be done. Bug tracking - he recommends a system for even one person. Source control - set up git (or Mercury) or Subversion on a server. Stuff on hiring also.

Also, if I were you, I'd read Eric Sink's "On The Business of Software" - much of it is about setting up what he calls a "micro-ISV" (i.e. a small software company). Spolsky also has "More Joel on software" which I haven't read yet, but if it's as good as his first, it's worth it.

With disk space so relatively cheap, I'd strongly recommend a database per developer. Check out Liquibase (or similar tool) - a db schema management tool for your merging and branching.


For more focus on databases, check out the writings of Martin Fowler and Scott Ambler.

[Edit 2]

Almost forgot - agree on (and stick to) coding standards - take a set (sample) and discuss/agree. Naturally, the same goes for your code.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.