Well, the only document that is really needed in whatever form is, in my opinion, a document that describes what the customer wants and what you are going to deliver. That document is difficult enough as it is. If you don't have incremental development, the client must imagine the program beforehand, without much knowledge of programming and user interfaces. And you must imagine the useage beforehand, without much knowledge of the clients exact working methods and processes. Needless to say that communication is vital here. You may have to draw some screens or build a non-functional prototype, just to be sure you are talking about the same things.
Other documents (database schema, UML diagrams, etc.) may come in handy, but I would only make them if I needed them. The client will probably not ask for it, so they are for your own convenience only.
The same appies for the user documentation. For an intuitive application in an easy process, you don't need it. But for more complex applications or processes, a helpfile and/or a printed manual can be necessary.
Best regards