Essentially the problem is that if you digitise each polygon separately the boundaries will not match exactly. My instinct is to have a table of line segments and generate the polygons from that using postgis but then all the line segment end points have to join exactly which is painful as there are a lot of line segments.
I have thought about writing a script that uses heuristics to match up lines and then add extra segments to bridge the gaps as suggested in a previous question I asked: How to automatically convert line features into polygons using QGIS/PostGIS?
I feel this is such a common task that there must be some "best practice". If I were starting from scratch then how would I do it?