Ok, it's getting a bit more clear. So, every time any change is made, I need to follow two steps:
a) Create a package to affect the existing database
b) I then need to do partial rebuild of my BO, to affect the properties
Very, very close

a) Make changes to SQL Schema in DDT.
b)
deploy your changes. This is done via the deploy button. As part of that, create a new package. This creates a new package, then applies the package to the target database. Doesn't matter version target is at (as I understand it), it'll get updated to the schema in the package (which is the latest schema).
c) Then, as you mentioned you would need to do as much a rebuilding on you BOs as needed to get the latest changes. You might also need to build new BOs for new tables/views, etc.
d) Update the code using those properties changed in the BOs. I.e. if you had a field in table MyTable called BaddlyNamedColumn, then changed it to MuchBetterNamedColumn, you could potentially have code referencing BaddlyNamedColumn, which would break after the MyTableBO was rebuilt. This is pretty easy because it will break the compile in most cases. There are a couple of cases where you'll need to do a bit of digging. You might need to search also if you are using code like:
MyTableBO1.Item("BaddlyNamedColumn")
You might also will need to check all the binding field properties that referenced BaddlyNamedColumn for bound controls. I think the property is set via a string in the designer file, so it wouldn't break until you ran it.
I've done steps a-c a bunch. In most cases, all the changes are either found on compile, or related to data binding. I try not to use the Item("") as it is a pain to find