Ouch, that's a lot of redundancy of data. Maybe that's good, I dunno.
A lot of people have the wrong idea about [man]move_uploaded_file[/man]: this is used as part of the upload process itself, not to move a file post upload. PHP places the file in a temp directory during the process of the upload, and then must move the file to another location on the filesystem when the upload is complete. At this point, the upload is considered succesful. That's what [man]move_uploaded_file[/man] is for. For example, if the web server/daemon doesn't have permissions to write to the actual location where you want the file to reside (permanently?), then [man]move_uploaded_file[/man] will fail, and your script should tell the user of the failure.
To actually copy the file to a second location after upload, you would need [man]copy[/man], as you note above.
As for storing the data in a DB, you can do that,also, but... Are you sure you want to?