database layering