简体   繁体   中英

How to design a database which has single category and n number of sub categories using mysql

How to design a database which has single category and n number of sub categories using mysql

Example:

category

catId categoryName

1 cat 1

2 cat 2

3 cat 3

4 cat 4

subcategory

subCatId subCategoryName catId

1 subcat1 1

2 subcat2 1

3 subcat3 2

4 subcat4 4

For single category i can the above structure.

Like this if i am having n number of subcategories. In this case how should i design the db

thanks in advance

You could use just one table category with columns:

  • category_id
  • category_name
  • parent_category_id

For main categories You set parent_category_id to null and You're done. :)

using normalization

2 table if one subcategory has only 1 parent category

Category

id

SubCat

id

category_id (linking to category)

you would have 3 tables if one subcategory can be part of more then 1 category. Two with your data, and one for linking the two together

Category

id

name....

SubCategory

id

name ....

Sub_Cat_Link

category_id

subcategory_id

thus searching for all subcatergories of a category would result in a statment like

select * from SubCategory where category_id = idOfACategory

My principle is that if you can support N-levels you can support 2 levels (and not get in a pickle whan a fickle business user decides to have sub-sub-categories)

So i would create a categories table with the fields

  • id (autogenerated, sequence, UUID)
  • parent_id (foreign key to categories.id)
  • name
  • ...

In order to get the children of a category a

SELECT * FROM categories WHERE parent_id = :cat_id ;

You have to be a bit careful to keep it a acyclic directed graph, ie not create any loops, but that's about all.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM