I think this the most popular question: "How often should I backup my databases". So, here are some simple answers: "Everything depends on how large your database is? How often you make changes to your database? and How important your data is?"
For example, you can make a full backup every 24 hours (as you do), differential backup every 6 hours and backup your transaction log every hour.
So, now let's dig deeper:
Full database backup:
A full database backup backs up all data files and active part of the transaction log. The active part of the transaction log is necessary to restore a database to a transactionally consistent point. Remember: if you use simple recovery model the transaction log will truncate during the checkpoint process.And point-in-time recovery is not possible.
BACKUP DATABASE database TO DISK = 'd:/full.bak';
Differential database backup:
A differential backup is created similarly to a full backup, but with one important difference – the differential backup only contains the data that has changed since the last full backup (the active portion of the transaction log). Differential backups are cumulative not incremental. This means that a differential backup contains all changes made since the last full backup, in spite of the fact that they have already been included in previous differential backups.
BACKUP DATABASE database TO DISK = 'd:/diff.bak' WITH DIFFERENTIAL;
Transaction log backup
A transaction log backup contains all transaction log records that have been made between the last transaction log backup or the first full backup and the last log record that is created upon completion of the backup process. The transaction log backup allows to restore a database to a particular point-in-time before the failure has occurred. It is incremental, meaning that in order to restore a database to a certain point-in-time, all transaction log records are required to replay database changes up to that particular point-in-time. Please note that transaction log backup is available only for full or bulk-logged recovery models.
BACKUP LOG database TO DISK = 'd:/log.bak';
Assume that you use such database backup schedule with full backup every 24 hours, differential backup every 6 hours, and transaction log every hour. And your database runs under full recovery model. Look at the picture below:
Some crucial data were deleted at 20:30, the best we can do in this case is to restore the database to 20:29. The restore process will be next:
RESTORE DATABASE database FROM DISK = 'd:/full_10_00.bak' WITH NORECOVERY, REPLACE
RESTORE DATABASE database FROM DISK = 'd:/diff_16_00.bak' WITH NORECOVERY
RESTORE LOG database FROM DISK = 'd:/log_17_00.bak' WITH NORECOVERY
RESTORE LOG database FROM DISK = 'd:/log_18_00.bak' WITH NORECOVERY
RESTORE LOG database FROM DISK = 'd:/log_19_00.bak' WITH NORECOVERY
RESTORE LOG database FROM DISK = 'd:/log_20_00.bak' WITH NORECOVERY
RESTORE LOG database FROM DISK = 'd:/log_21_00.bak' WITH
STOPAT = '2015-11-26 20:29:00.000', RECOVERY
In this case data from 20:29 till 21:00 will be lost.