数据库规范化:产品与形状与大小

时间:2017-08-03 13:38:30

标签: database ms-access relational-database

我来自一家光学公司。想象一下,我们有一个扁平的矩形玻璃板(长x宽x厚),这是一个母产品,可以加工成更小的2D形状儿童产品,如圆形玻璃板,矩形玻璃板或三角形玻璃板。

我想找到一种方法以正确的方式存储特定形状的大小。例如,矩形部分仅由lengthxwidthx厚度定义,而不是由直径定义。圆由直径和厚度限定,但不由长度和宽度限定。跟踪此类信息的正确方法是什么?

例如,我可以有一个包含以下字段的表:

  • ChildProductID
  • 2DShapeCategory = {circle,rectangle,triangle}
  • DiameterOfCircle
  • LengthOfRect
  • WidthOfRect
  • L1OfTriangle
  • L2OfTriangle
  • L3OfTriangle

然后对于圆形部分,该行的值将用于例如:

productID2, shape=rectangle, diameterofcircle=0, lenghtofRect=10, widthofRect=5, L1ofTriangle=0, L2OfTriangle=0, L3OfTriangle=0

然后对于rect部分,该行的值可以是例如:

{{1}}

但这是正确的方法还是最佳做法?我觉得不是,因此需要一些帮助和建议

1 个答案:

答案 0 :(得分:0)

你走在正确的轨道上。良好做法不包括不保留有效数据的字段。更好的方法是使用三个表格;一个用于圆圈,一个用于三角形,一个用于矩形。您的父产品表将是productID以及与父产品本身有关的任何字段。那么你有这些表格:

Circles_table:

productID child_circleID Diameter

Rectangle_table:

productID child_rectID length width

Triangles_table

productID child_triID L1 L2 L3

每个表中的productID字段是将其链接到父产品的外键。