简体   繁体   中英

How to design a MySQL database for storing sell items

I have been trying to design a MySQL table o store the items of the store purchased by the costumers. I am stuck with what approach should I take to design a good table.

My first option is:

id bill_id_fk item1_id item2_id item3_id item4_id

In this approach, I'll create may be 20 columns for items (assuming that a costumer may buy a maximum of 20 items at a time). ID of the items will be stored in the item(n)_id columns for that specific bill_id_fk . My concern with this approach is that it would be difficult to query later for a specific item, like how many times a specific item has been sold.

My second opinion is:

id bill_id_fk item_id
1 1 23
2 1 29
3 2 23

In this approach, I'll just create 3 columns and for each item I'll create a rows with the bill_id_fk for a specific bill. In this approach, it is easier to query for a counts of the sell of a specific item. But my concern is creating thousands and thousands of rows when the app will be used and how will that affect the performance of the app over time?

I'd like to have your opinion on what is the best practice for designing such database. Or is there any other approach should I take?

There's no chance that you will go with the first choice, the second is the best approach for your case.

it will not affect your performance if you indexed the right columns.

When it comes to items can add a column to your bills table that holds item numbers, for example:

bills (id - total_price - user_id - item_counts)
bill_items (id - bill_id - item_id - item_price)

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