【发布时间】:2012-12-09 10:56:42
【问题描述】:
在我提出更多关于编码的问题之前,我想先找出最适合我的方法来制作我的数据库。我遇到了一个问题,我应该如何构建它以保持一切最小化,并且由于它的性质,我有很多重复出现的数据我必须表示。
我设计定制衬衫,并提供各种不同类型的衬衫供人们选择,有成人和儿童两种尺寸可供选择。例如,我有适合男士、女士、男孩、女孩和幼儿的圆领衬衫、插肩袖、戒指袖和连帽衫。每件衬衫的价格相同,从幼儿尺码到成人尺码的 1 倍,然后 2 倍、3 倍、4 倍和 5 倍的价格各不相同。然后是每种衬衫的颜色选择各不相同,有的可能有 4 种颜色可供选择,有的有 32 种。
因此,让我们仅以圆领衬衫为例。 Men s-1x, Women s-1x, Boys xs-1x, Girls xs-1x 和 toddlers NB-18months 共有 22 行,将在表格中表示并且价格相同。 2X 及以上仅适用于男性和女性,因此增加了 8 行,仅圆领衬衫总共有 30 行。当它进入颜色选项时,有 32 种不同的颜色可供它们使用。如果我要为所有这些都做每一个尺寸,那么仅针对圆领衬衫就总共有 960 行,其中主要是高度重复的数据,只需要一个小改动。
我想了想,认为最好把桌子上的这些物品当作储藏室里的实际物品,因为它们真的在储藏室里……你不会只有一盒衬衫可以在侧面打一个按钮来变成任何大小的颜色,你必须处理实际的衬衫和将它们放在某个地方的繁琐任务,所以我决定不要试图用一堆外键和索引来变得离谱,除此之外它变得同样乏味,当您可以将它链接到的数据放在第一个表中时,您最终不得不表示同样多但有更多表。
如果我们只取其他 3 种衬衫,并仅针对这 4 种衬衫对所有颜色和尺码应用相同的逻辑,那么将有 3,840 行,剩下的其他衬衫我不算在内,你可以说我正在一张表中查看大约 10,000 行数据。这些数据将随着时间的推移而增长,我想知道它可能会变成什么来保持一切井井有条。所以我认为最好的逻辑可能是像在实际零售店中那样将其分解,将部门分为男性、女性、男孩、女孩和婴儿。这样我就有了 5 个单独的表,只有在用户决定“去那个部门”时才会调用它们,所以如果有人想要男士衬衫,他没有 7,000 多行的额外数据,甚至没有适用于他正在寻找的东西。
这是一种更好的设置方式吗?还是将它们全部保留为一张巨大的表,然后从男性部分的表中查询 php 中的“男性”衬衫,女性和儿童也是如此?
我的下一个问题是所有可用的颜色选项,正如我之前所说的,有些衬衫少至 4 件,有些衬衫多至 32 件,所以其中一些数据足以形成一个表格。自己的,所以我真的可以为每种衬衫单独准备一张桌子。我将在 php 中使用查询来填充表格中的项目,因此我不必在 html 和 javascript 中编写太多代码。这样我就可以将其设置为SELECT ALL * table WHERE type=men,它将获取所有男士衬衫并自动填充每件衬衫的编码。这样,当我在表格中添加和取走东西时,它会自动更新。我已经对我将如何做到这一点有了一个想法,但我只能想到这么远,因为我还没有决定一个好的方法来设置表格,这是我必须将它构建成的来电。
例如,如果我将每件衬衫的所有颜色选项都放在同一张桌子上,而不是将其分解并链接到其他表格来表示它们的外键。那将是两种完全不同的调用方式,所以我被困在这个问题上,真的不知道该去哪里。有什么建议吗?
【问题讨论】:
-
@DaMightyOptiq - 忽略那些要求你接受不够好的答案的人。
标签: sql database-design data-modeling