The extra_field-related tables are unnecessarily confusing because they have a "field_type" that identifies the type of value that should be stored in this extra field, and an "extra_field_type" that identifies the kind of item this extra_field relates to.
This should be clarified, renaming "field_type" to "data_type" (or "value_type") and renaming "extra_field_type" to "item_type".
Also, the term "value" in exta_field_values.value should be renamed to field_value because it is a reserved keyword in several DBMS: see https://www.petefreitag.com/tools/sql_reserved_words_checker/?word=value