Is there an application available that allows you to define each component and it's connections in a circuit (kind of like Entity Relationship Diagrams in database design), and have the application generate the most logical use of space on a PCB for you?
No, not really. What you are asking for is called auto-placement, which largely doesn't exist, and works poorly when it does. This is one of those problems where the human brain is still better than software. Determining layout is a complex issue with a very large solution space, and as such hasn't yet yielded to anything more than toy software implementations.
However, most of the rest of going from a schematic to a PC board can be automated or at least largely assisted by commonly available software. Even for layout where the human makes the decisions, the software can make sure some basic rules are met.
Once you have a layout, which defines where what parts go on the board, then the next step is routing. That refers to figuring out where all those copper tracks go that form the connections between the parts. For this step, auto-router software is available and can be useful. Even that isn't to the point where you can fire and forget, but such software can take care of a lot of the details for you.
Usually routing is a iterative process between you manually adjusting a few things, then letting the software do the grunt job of routing the things that are less critical. Sometimes the software can't find a solution, or you don't like what it did. You then move a few things around, manually route some traces, set some constraints, and let the software try again.
Anything that calls itself a E-CAD (Electrical Computer Aided Design) package will have schematic capture and routing capability. Some will additionally have auto-routing capabilitiy or at least the option to add it. Examples of such E-CAD software are Eagle, Altium, and quite a few others.
As mentioned in the previous answers, this is basically the function of Electronic Design Automation (EDA) or Computer Aided Design (CAD) tools.
The process of entering the connections between the components is known as schematic capture. Nowadays its normally done graphically rather than textually (as in traditional SPICE). The schematic may be annotated with additional indicators to show, for example, which wires must cary high currents, which wires should be layed out with controlled impedanc, or which ones must be length-matched to each other.
The EDA tool then converts the graphical schematic to a netlist file, which might be a plain text file or might be some kind of binary.
The netlist is imported into a layout design tool. In order to improve autorouting, the user has to carefully program constraints that indicate the design rules the tool should follow in placing the components and routing the wires between them. Managing these constraints to get the best results is the main skill needed to use the autoplacer and autorouter effectively, and it can be very time consuming.
In my experience, like others indicated, I get better results by doing manual placing and routing, possibly with some tool assistance. For example, I do most of the routing manually but use the tool to route multiple lines in parallel after I lay out just one of the lines. Or use the tool to add zig-zags to a line to make it length-matched to another line.
The O.P. basically describes an EDA software package. Such software does exist: Cadsoft EAGLE, OrCAD, KiCAD, Altium, to name a few.
The part tasked with automatically creating a layout from schematic is called PCB autorouter. But be aware that the layouts generated by autorouters are rarely most logical. A lot of professional PCB designers don't use autorouters.
The database you describe sounds a lot like the SPICE model that sits underneath almost all electronics simulation / CAD software in some way or another. The old command-line SPICE stuff is, I'm fairly sure, available free & open-source.
Translating from that model to a PCB layout (in theory) should be a matter of finding a PCB-CAD package & importing the database in the correct format, then telling it to auto-route the PCB. In practice you probably need a fair bit of background work to tie the simulation to specific components, footprints, etc.
However, Auto-route is about the worst way to lay out a PCB and is likely to result in a non-space-efficient and inelegant layout using more tracks, layers, vias, or links than you need.
Autoroute will work for very basic stuff, but then you may as well lay those out by hand for all the time it saves you. For anything more complex it will throw its hands up and leave the rest to you, having made a rats nest of the first half for you to untangle.