The image below is my ham-fisted attempt to design a database of cabinets. I'm new to this and this is simply an exercise to help me understand database structure.

My goal is not to create an inventory/order database that relates to client purchases. I want to create a database that would allow me to populate products based on style, material, joinery, or etc... In other words, if a customer visits the website and selects to view cabinets of a certain category then all the cabinets associated with that category will populate in an array. It will display an image and beneath that a title. For example: enter image description here

From what I've researched attributes should define the columns of the table, but many of the cabinets have multivalued attributes. I'm starting to believe I've overcomplicated the design. I added a few text blocks to hopefully clarify the purpose of the table. Can someone with experience provide some constructive feedback? Thanks!

EER Diagram

2 Answers 2


I can only repeat what I tell everyone - Data Model Resource Book Volume 1 is maybe half about that topic and it is a serious goldmine of ideas and complications.

Seriously, depending what you want to cover that is a brutal topic. Some things are sized (3 x 2meter lone, 5x1.5 meter long), some have colors, some sizes, some colors AND sizes.

Price may depend on attribute, volume combined dimension (total meters). World of pain.

The question is how much of that you NEED - and what yo can cut.

I suggest reading the book for also in depth discussions about the topic.

Sadly, that is all I can say - without a requirement, a review of your schema is moot (did you forget something? How can I know... we only can check what is possible, not what is wanted, in product complexity).

  • Sounds like you're telling me I'm in over my head :) What do you mean a requirement or review of schema? The tables and relationships in the EER diagram is all the data I wish to include if that is what you are asking. Thanks for the book recommendation.
    – wellington
    Jul 17, 2018 at 15:26
  • 1
    Yeah, but the tables are waht you THINK is good enough for your needs, but we don't ahve your needs in detail. And without those we can not review. That is requirements.
    – TomTom
    Jul 17, 2018 at 15:35

It looks like a pretty good start, but it is hard to tell without knowing the requirements. I would suggest that you start out by trying to capture the requirements in short sentences like:

A `CABINET` have exactly one `JOINERY_TYPE`  

You can then verify that your model captures all the requirements.

I would stay away from attributes like id, name etc. I would use cabinet_id and use that throughout the model.

  • By "use that throughout the model," you mean that naming convention, correct? How would you go about adding data to the database? That part is very confusing to me. Do I import a CSV data file for each table? Just don't see how databases help to streamline the process if I have to build data files to import to the database. Do you know of a good walkthrough resource? Thanks
    – wellington
    Jul 17, 2018 at 14:49
  • 1
    I could be wrong, but your question about streamlining the process suggests that you need some time learning what databases are for. If you only plan on using the data n one manner and in one context, then a database doesn't give you much in return for your effort. It's when you begin sharing the data among multple uses that you get the payoff. Jul 17, 2018 at 18:36
  • 1
    Yes, it is the naming convention. I'm a bit pussled by your question. Beside an initial load of data, there is usually some kind of application that modifies the data. Are you planning to load your data and never change it? Jul 17, 2018 at 18:44
  • @Lennart Never received notification so just saw comments. For instance, if a product has many attribute types (one-to-many relationship), do I enter that item into the database table twice, so that each entry is assigned one attribute type? The data will need to be modified from time to time.
    – wellington
    Jul 23, 2018 at 19:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.