You can and should use both methods.
Method 1: split interface and data files. You can define your data tables in one file and put your layouts and scripts in a second. You can then set up your relationship graph in the second file to reference tables in the first. Since most updates change scripts, layouts or other interface elements, you can put an update in place just by replacing the interface file with a new, updated copy.
Method 2: Scripted import of all data from old to new file copy. Sometimes you can't avoid the update option as you've had to modify a table definition or a data level relationship. You can write a script that imports all the data from every table in the old file into tables in the new file. This same script can also update any serial number settings to the correct next serial number values. With a bit of creativity, you can use a container field and Insert Field so your script can ask the user to select their original file and then uses that insert by reference to extract the path and filename of the original file for your update script.
Great! thanks for the response.