TL;DR: To write portable code define text columns as `<notnull>false</notnull><default></default>` or simply leave out those two tags as columns are nullable by default with a default value of null. Keep in mind that NULL means unknown and you *cannot* store an empty string in the database. Make sure your code does not try to do that.

not null is only problematic for text columns:
1. when defining `<notnull>true</notnull>` together with `<default></default>` you create a contradiction becaus emptystring is treated as null
2. when defining `<notnull>true</notnull>` you should be pretty sure noone will ever try to store an empty string in that column because oracle treats '' as null, triggering the notnull constraint

Also be aware that our DBAL (MDB2 as well as doctrine) should convert '' to NULL for all interactions with the database: 
```
PORTABILITY_EMPTY_TO_NULL	Convert empty strings values to null in data in and output. Needed because Oracle considers empty strings to be null, while most other DBMS’s know the difference between empty and null.
```
I write should because I cannot find the place in core where we set the portability parameter. @bartv2 It seems we don't use the portability features, or do we?

Integer columns are not touched by this ... other than defining `<notnull>true</notnull><default></default>`, omitting the `0` and creating a contradiction...