If two programs don't need to access each other's data, put the data into different databases.
If they need to access each other's data, using schemas like you describe is a good idea.
For security reasons it might be a good idea to use one schema for objects available to both programs and a schema each for data that only one program uses. That way you can ...
Define a StatusType that will migrate through to a StatusLevel and provide a mechanism for a CHECK constraint.
DML (I'm doing this freehand, there may be syntax errors lurking):
CREATE TABLE StatusType
StatusTypeCd TEXT NOT NULL
,Description TEXT NOT NULL
,CONSTRAINT PK_StatusType PRIMARY KEY (StatusTypeCd)
INSERT INTO StatusType VALUES ...
Ok, given there are no restrictions on the behavior of someone asking a question, we can forgo a lot of trouble migrating the UserId through the data model.
I don't think you're too far from the mark, just some unnecessary Id columns that aren't providing value.
This should satisfy the requirements as you've described them:
I changed Like to ...