The goal and advantage of normalization is that it makes it difficult (ideally, impossible) to enter anomalous data.
For example, in Figure 1, to prevent accidentally storing a row with type 3 and category 1? Nothing but writing application code, which is absolutely perfect.
But if you use a single table approach and you ever have to change the parent category of typeid 3, you will have to change the data in millions of places to reflect this change. This means that you lock the table during this cleaning, otherwise new data may be inserted at the same time.
Normalization helps to eliminate the redundancy of information storage, and if each discrete fact (for example, typeid 3 belongs to category 2) is stored only once, then it is easy to change the atoms and automatically change the meaning of all links to this line.
You are right that more unions are needed, but only if you use pseudo-docs all over the place, as you do. You do not need to do this, instead you can use natural keys, and links to them will be declared using cascading foreign keys, so a change in the search table will automatically update the links to the tables.
Of course, normalization rules do not provide for the use of pseudo-oxides. These rules do not say anything about them.
Repeat your comment: an alias or surrogate key is the id column that is used to identify rows. Typically, values ​​are allocated using an auto-increment mechanism that provides uniqueness by allowing simultaneous transactions to insert rows. The id value does not matter with respect to the identifiable string.
The following shows how your tables look in the usual form, but without surrogate keys.
productsOffered table
client | product | customURL =================================== Smith | Rawlings Glove | 1111 Smith | Product 2 | 2222 Smith | Product 3 | 3333 Smith | Product 4 | 4444 Jones | Rawlings Glove | 5555 Jones | Product 4 | 6666
productsDefinition Table
product | type ======================= Rawlings Glove | Gloves Product 2 | Bats Product 3 | Bats Product 4 | Shoes
typeDefinition Table
type | category ============================== Gloves | Baseball Equipment Bats | Baseball Equipment Shoes | Football Equipment Footballs | Football Equipment
categoryDefinition Table
category ================== Baseball Equipment Football Equipment
It is completely consistent with the design and normalization of relational databases in order to use non-integer numbers as the data type for the primary key column, and therefore foreign keys refer to them from other tables.
There are good reasons for using surrogate keys for the sake of performance or brevity, or allowing you to freely change values ​​in other columns. But normalization does not require the use of surrogate keys.