请考虑下面这个数据库支持的应用程序设置(在我的情况下,DB是MySQL,应用程序是Ruby(Rails 3),但我认为对于这个问题来说并不重要)。
假设我有一个仓库应用程序。
我有多个项目,其中会有类别和状态。
例如,具有零件的表格将有一些状态,例如:现货、停产、缺货以及多个类别,例如:IT硬件、汽车、医疗等。
此外,我还有其他需要状态和类别的表格,例如 供应商:已批准、已倒闭、新 订单:开放、处理中、已发货、已取消。
等等。
问题在于:
我认为如果我想正确地规范化我的数据库-我会有一个称为categories、categories_types、statuses、statuses_types的表格。
然后我会将所有类别存储在那个表格中,并且任何属于某种类型的类别,例如所有零件类别,都会有一个外键指向category_type - parts,以此类推。类型也是如此。
这是标准化的方法。
然而,我经常看到人们为特定类别创建单独的表格,例如, 会有一个名为part_categories、vendor_categories、order_statuses、part_status的表格。这是一个不太标准化的数据库,但我想当你处理很多表格时,它可能更清晰。
这两种方法哪种更好?在你的经验中有什么优缺点? 我通常选择第一种设置,但我经常看到第二种设置,所以我开始怀疑我的方法。
谢谢。
假设我有一个仓库应用程序。
我有多个项目,其中会有类别和状态。
例如,具有零件的表格将有一些状态,例如:现货、停产、缺货以及多个类别,例如:IT硬件、汽车、医疗等。
此外,我还有其他需要状态和类别的表格,例如 供应商:已批准、已倒闭、新 订单:开放、处理中、已发货、已取消。
等等。
问题在于:
我认为如果我想正确地规范化我的数据库-我会有一个称为categories、categories_types、statuses、statuses_types的表格。
然后我会将所有类别存储在那个表格中,并且任何属于某种类型的类别,例如所有零件类别,都会有一个外键指向category_type - parts,以此类推。类型也是如此。
这是标准化的方法。
然而,我经常看到人们为特定类别创建单独的表格,例如, 会有一个名为part_categories、vendor_categories、order_statuses、part_status的表格。这是一个不太标准化的数据库,但我想当你处理很多表格时,它可能更清晰。
这两种方法哪种更好?在你的经验中有什么优缺点? 我通常选择第一种设置,但我经常看到第二种设置,所以我开始怀疑我的方法。
谢谢。