There are actually several other issues that arise when data leaves its comfy confines in a centralized RDBMS and gets split apart and sent hither and yon over the airwaves. However, to avoid scaring you away from mobile database development entirely, I'll instead present a popular solution. Included with the Sybase SQL Anywhere Studio 8 development suite is a data-synchronization technology known as MobiLink, which consists of a multithreaded server application (supported on a number of UNIX variants, Linux, and Windows 2000/XP) that handles incoming requests from sync'ing users. Part of the MobiLink development process involves the development of a number of synchronization SQL scripts that get installed into the target server RDBMS. Typically, there are one or more synchronization scripts for each table in the database (multiple scripts for handling the uploading and downloading of data) and several setup event scripts (that is, begin_synchronization, begin_upload, end_download, and so on) that allow sync setup and teardown operations to occur. Data conflicts are handled through MobiLink's conflict-resolution process that (as you may have already guessed) is already handled through SQL synchronization scripts. Although the client databases are required to be either ASA or UltraLite, MobiLink is database server-agnostic because it performs all sync operations via ODBC. I should also mention that all these SQL scripts are written in the SQL flavor used by the target database (MobiLink ships with samples for Sybase, Oracle, and DB2).
On the client, special "publication" information is configured in each ASA or UltraLite database that specifies the MobiLink server (IP address and port along with application version) to synchronize against. Finally, Java and C APIs are provided that allow syncs to be triggered from clients over native TCP/IP or HTTP. Both RSA and ECC encryption is supported to ensure that the data transfer is secured.