So create the table manually in your database. Liferay will not define the FK relationships for you, so that must be a manual step.
For the not null thing, you have a couple of choices...
Easiest one is the definition of the column for the entity. If the column type is a primitive, you'll never have a null value so you don't have to worry about nulls (instead they would be zeros).
For the FK verification side, you can either do lookup and fk validation check within the XxxLocalServiceImpl class (overriding the addXxx and updateXxx methods), or you could leave them as-is and implement a solution using a model listener (in the onBefore methods, ensure the column has a valid FK value, throw an exception if it does not).
Please sign in to flag this as inappropriate.