How should I handle constraining options in a database? For sake of simplicity,
I have a Gender table with only 2 values:
Male, Female

I have another table called Activity with a field called restrict_to_gender. The values of this field can be any one of the following
Male, Female, DoNotLimit

I know I can simply create another table called ActivityGenderLimit to host these values, but it seems like I am having redundant values, since the Gender table already has the genders.
How do database people handle situations like this?
[Note: i am willing to change my question title, but I didnt know a better one to describe it]
Constraint is the exact keyword you'll want to look into (so it was coincendetaly good verbiage you used).
It depends on the database system you end up using (as they each have their minute and not so minute differences) but in Microsoft SQL Server, for example, they call it a &quot;Check Constraint&quot;.
You can read about Check Constraints and how they limit a field to specific values here: Create Check Constraints
Specifically it sums it up by saying:

You can create a check constraint in a table to specify the data
values that are acceptable in one or more columns.

For further supplemental reading, W3Schools has a succinct page on them here: SQL CHECK Constraint
They also provide some examples of code implementation across multiple database systems.
Also, if you wanted to use a Table to still hold the values that are enforced by your Check Constraints, in some database systems this is possible. Here's a StackOverflow post with a good example using a Function in the Check Constraint that can reference your values Table: Can a Check constraint relate to another table?