As you suggest, the public database methods are the intended use exposed only through the data_base class. Sometimes we need to make methods more public than we would like to to the limitations of c++. For example in c# these methods would be limited to the module.
(edited)