简体   繁体   中英

How can I deal with the sub category in database?

I have this csv file in the following format:

1043374544±Collectibles
1043374544±Decorative & Holiday
1043374544±Decorative by Brand
1043374544±Christopher Radko
1043397455±Collectibles
1043397455±Decorative & Holiday
1043397455±Decorative by Brand
1043397455±Enesco
1043397455±Precious Moments

and the number is the itemID and '±' is the delimiter, after the delimiter is the category where the item belongs. And each category in the bottom is the previous one's sub category. So it's like Collectibles --> Decorative & Holiday --> Decorative by Brand --> Christopher Radko in this case. The problem is items will have different numbers of categories.

So how can I create table that I can be able to enquire and know what items are in each category or sub-category.

When an item can have any number of categories and a category can include any number of items, then you have what is commonly referred to as a n:m relation.

The usual method to solve this issue is by adding a third table "relation" where the primary key is the table of the two others.

Here is an Example (* means column which is part of the primary key)

Table products

id* | name            | price
----+-----------------+--------
1   | Thingamy        | 3.45
2   | Whatchamacallit | 2.99
3   | FooBarWidget    | 1.00

Table categories:

id* | name
----+-------------
1   | Collectibles
2   | Holiday
3   | Decorative

Table category_product

product_id* | category_id*
------------+---------------
1           | 1             // Thingamy is a Collectible item
2           | 1             // Whatchamacallit is a Collectible item
2           | 2             // Whatchamacallit is also a Holiday item

Because both colums of the relation-table are part of the primary key, it can have exactly one entry for each possible combination. Having the entry means having that category assignment.

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