Mysql 这个数据库方案合理吗?

Mysql 这个数据库方案合理吗?,mysql,database,database-design,Mysql,Database,Database Design,我需要一些帮助,为一个关于家具的PHP网站设计我的数据库 我有很多主要的类型,那就是应用领域。例如,办公室、户外等 我有皮革、布料等类别 一个类别可以有多种类型。例如,布制品可以在办公室和室外使用,例如,皮革不能在办公室使用 每个类别都有一个名为“link”的字段,用于存储要显示在PHP页面菜单中的图像 页面还具有用于显示不同语言描述的语言字段 每个类别都有许多产品。某些类别与内部的其他类别具有相同的产品 比如说, 皮革可以在办公室里用来做皮椅 一件布艺物品可以在办公室里用来制作布艺沙发 但是

我需要一些帮助,为一个关于家具的PHP网站设计我的数据库

我有很多主要的类型,那就是应用领域。例如,办公室、户外等

我有皮革、布料等类别

一个类别可以有多种类型。例如,布制品可以在办公室和室外使用,例如,皮革不能在办公室使用

每个类别都有一个名为“link”的字段,用于存储要显示在PHP页面菜单中的图像

页面还具有用于显示不同语言描述的语言字段

每个类别都有许多产品。某些类别与内部的其他类别具有相同的产品

比如说,

  • 皮革可以在办公室里用来做皮椅
  • 一件布艺物品可以在办公室里用来制作布艺沙发
  • 但是一件皮革制品也可以在户外用来制作皮椅
因此,同一产品可以分为两类

产品有许多模型图像(后视图、前视图、红色、黑色等)

有些产品有一种技术图表,而另一些产品有另一种技术图表。例如,对于布椅,我不想显示宽度,而对于皮椅,我想显示它是否易碎。技术图表也有不同的语言

这是我的第一个大数据库

下面的计划行吗?还是我有概念上的缺陷

(我添加了管理员,以便可以添加或取消产品或类别。)

为了澄清,我大致有以下几点:

  • 类型学:办公室、户外、汽车、海事、合同、休闲
  • 类别:皮革、仿皮革、布料、泰维克
  • 产品:椅子、沙发、雨伞、桌子、床罩
每个产品只能属于一个类别,但可以用于多种类型。例如,一把椅子可以只用皮革制成,但可以用于多种类型

当我在我的网站上选择一个类型时,我想显示该类型中的类别(类别可以在类型之间共享),然后我想在该类别中选择一个产品,看看哪种类型可以在中使用

以下是更新的数据库方案:


第一条规则,防止在数据库中输入两次或更多次类别。例如,输入可在室内和室外使用的皮革的照片和说明,或同时输入两者。假设你有一张“材料”的桌子。无论你的家具有什么材料,我都会分类如下:例如:输入{Enum('indior'、'outdoor'、'in outdoor')}或数字格式,即{'1'、'2'、'3'},你可以在你的注释部分,在表格内的数字代表什么


然后从材质表中调用材质,而不是分别创建室内材质表和室外材质表。

第一次尝试也不错。(顺便说一句,我曾在一家大型家具公司工作,因此这是一个罕见的案例,我实际上了解真实世界数据的一些信息,我试图回答Stackoverflow中的一个问题!)

我看到的最大的问题是类型学和类别之间的关系。通过将产品通过类别链接到类型,这意味着在我看来是同一类别的东西,例如“皮革”,将需要多个记录,每个可能的类型对应一个记录。例如,如果您有皮革办公家具和皮革客厅家具,则必须创建两个皮革记录

我认为从一个产品到一个类别有一个FK,从一个产品到一个类型学有一个独立的、不相关的FK更有意义。我猜你不需要强制执行限制,比如说,办公室家具不能是柳条。你不会有任何这样的产品记录。但如果您确实需要强制执行此操作,那么我会在数据库中添加另一个表,用于连接类别和类型,并对所有可能的组合进行编码。也就是说,可能存在(办公室,皮革),(客厅,皮革),(办公室,织物),(户外,柳条)等的类别类型记录。然后在添加产品记录之前,验证组合是否合法,无论是在应用程序代码中还是在触发器中

我对通过图表类型将技术图表与产品联系在一起有复杂的感觉。这张额外的桌子给你带来了什么?为什么不直接将它们链接到产品记录?我想你只能有一种或其他图表类型,不是两种都有?但是创建中间表并不能阻止两个记录的创建。我认为您需要代码(或触发器)来说明,如果其中一个存在,则不允许创建另一个或给出警告。当您在寻找一个表时,只需在两个表上留下join,然后查看您找到了哪个表。如果您需要在创建技术规格记录之前指定给定产品所需的技术规格,请在产品中输入一个字段,说明所需的技术规格。如果在您实际创建一个字段之前,还没有确定需要哪个字段,那么记录的存在表示需要哪个字段,您不需要任何其他字段

我不清楚这是什么类型的。假设您需要将类别链接到类型,为什么不直接链接它们呢?为什么桌子在中间?

顺便说一下,你的一些术语似乎很奇怪。这是客户指定的术语,还是您试图从另一种语言翻译

因为你所说的“类别”似乎是指“材料”。为什么不用更具体、更清晰的“材料”来称呼它呢

“模型”的意思似乎是“图像”或“图片”。为什么不这样称呼呢?“模型”是“产品”的同义词。(有些公司会用它们来表示不同的意思,通常是模型是给定产品的子类型,反之亦然。)

“打字错误”一词