ok. Its a best practive have a maintenance plan on DB and schedule it periodically, depending on workload. Usually, running it monthly is enough but if you have an high numeber of changes can you run it biweekly or weekly.
In a maintenance plan, you can rebuild\reorganize index, shrink the db, organize the backups, etc…
Every DB, over time, grows in size, it is inevitable or almost. When you delete a row a DB leave an unused but not free unallocated space and the size grows.
To limit it, you can resize the db(shrink) and rebuild the indexes.
SHRINK
This operation delete the unused space and reduce the size of db. You can apply it on each file(data or log) or on entire DB:
DBCC SHRINKFILE (LogicalFileName, TargetSize);
TargetSize → The desired final size of the file in MB
DBCC SHRINKDATABASE (DBName, TargetPercent);
TargetPercent → The percentage of free space you want to leave in the data or log file.
INDEXES
Usually, if fragmentation is less of 30%, you can reorganize, if it is more, rebuild it
The commands are those:
ALTER INDEX Index_Name ON Table_Name REBUILD
ALTER INDEX Index_Name ON Table_Name REORGANIZE
Those operation helps to reducing the size and improving the performance; in very case, if you not an expert on DB, make those operations with a DBA.
There you can find a topic of mine on db maintenance.