Software Engineers and DBAs What are main differences between Database Administrators and Software Engineers?  To what extent should a Software Engineer know the details of the underlying database?  Where is the border between these two professions?
It depends entirely on the breakdown of work at an organization, and what each person's responsible for.  But they're just labels; someone titled 'software engineer' at one company might be 'programmer/analyst' at another company or even 'systems programmer', etc.   There is no hard border between the two.

Where I work, the 'software engineer' tends to be the person doing both the design and the actual implementation, and we don't have anyone titled 'DBA';  The maintenance type tasks that would typically be a DBA fall back to the general 'system administrators', based on the guidance that the 'software engineer' gave them.

In what I personally think is a best case scenario, you'd break the design into multiple parts:


data modeling
requirements for the data storage (record structure, size of tables, number of inserts/deletes/updates per second, how quickly processes need to complete, etc)
requirements for disaster recovery / continuity of operations (needs to be back up within (x) hours, can't have longer than an (y) hour maintenance window each (month) )
implementation of the storage (selection of the database software, selection of the physical storage, how the tables are spread out on the storage, etc.)
implementation of the backup plan


And then the maintenance type tasks:


tuning the database
tuning the queries
debugging when things go wrong
overseeing &amp; verifying the backups
applying software updates


For most of these, they don't have to be done by a DBA; it could be done by a software engineer, or in the case of some of the maintenance tasks, a system administrator.

If you have people in both roles, you might have them confer and collaborate on the design and tuning (what they'd call in construction 'design-build') , or if it's a rush job, you might assign the various tasks between the two.  You might have other people involved, too : a 'software architect', 'data architect', an archivist, various programmers, system administrators, network administrators, security, etc.