I’m building a Product Catalog in NocoDB .. .and I’m trying to make sure the architecture is correct..
The Product catalog of of Kitchen and Bath Products
Products Table
Brand Table
3. Collection table
A product can only be 1 brand , and only be part of 1 collection
A collection can only be part of 1 brand
A brand can have multiple products
NOCODB has a “has many” relation ship .. it doesnt have a many to one or a one to many option … so the only viable way was to go in the Brand Table and add a column for Products and set it to “has many" .. and do the same for the collection column in the brand table ..
An then in the collection table I added a product column and set it to “has many”
———————————————-
that seems to be ok but now I wanted to add categories for these products .. . Let’s say a “Product” is a toilet .. .so I added a CATEGORY table and i added a linked field for “Child_categories’ … in the NOCODB artchitecture that’s the way it seems to make sense.. I could not have parent category for each category (see picture)
I want a product to have layers of categories, so grandparent, parent and child ..
So a product would go to –Bathroom Product –> Toilet –> 2 Piece Toilets
the way i have it set up i can only assign it to the grandchild or the youngest child , I guess it’s implied that the parent and grandparent are waht they are
Is there a better way to this ? … should i do a video post instead?
Your current setup is on the right track. You’ve correctly identified that NocoDB automatically creates the inverse relationship — when you set up a “Has-Many” link from Brand → Products, NocoDB automatically creates the corresponding “Belongs-to” link on the Products side.
For your Category hierarchy question:
Your approach of using a self-referential link (Child_Categories linking back to the same Categories table) works, but you’re right that it can feel limiting. Here’s the recommended approach:
Option 1: Self-referential link pointing UP to parent (Recommended)
Instead of “Has Many Children,” flip the direction:
In your Categories table, create a Links field called Parent_Category
Set it as a Has-Many relationship pointing to the same Categories table
This automatically creates a “Belongs-to” field showing each category’s parent
This way, your categories look like:
Category Name
Parent_Category
Bathroom Products
(empty - top level)
Toilets
Bathroom Products
2 Piece Toilets
Toilets
Displaying the full path on Products:
Once you have the parent link set up, you can use Lookup fields to pull the parent and grandparent names into your Products table:
Link your Product to its leaf category (e.g., “2 Piece Toilets”)
Add a Lookup field on Products → linked category’s Parent_Category to show “Toilets”
Add another Lookup field to show the grandparent level
This gives you the full hierarchy path displayed on each product while only requiring you to assign products to the most specific category.
Option 2: Explicit category levels (Simpler)
If you’ll always have exactly 3 levels, consider adding three separate link fields directly on Products:
Category_L1 → Links to Categories (Bathroom Products)
Category_L2 → Links to Categories (Toilets)
Category_L3 → Links to Categories (2 Piece Toilets)
This is less normalized but makes filtering and reporting straightforward.