• Though i usually avoid EAVs this seems like a case where you could have one table to hold all the attributes.

    for example

    you could have one table with the shape type and shapeId,

    This could link to a table that holds all the attributes for that particular shape

    with ShapeId, ShapeAttribute, Value , Units

    For ShapeAttribute you could hold the values of height, length, colour, radius, depth etc....

    in the Value column you could hold the value of each measure, eg Length = 2 , height = 4

    and in the Units column you can put the unit of measure for each value, eg. Kgs, mm , cm etc..

    This table could be cleaner with a lookup table for ShapeAttribute.

    This is just a quick suggestion though without knowing what the business requirements are (if any)