多对多链接表的替代方案

时间:2013-06-29 14:19:03

标签: php mysql database database-design many-to-many

我正在开发一个项目,我想让最终用户在创建硬件设备列表时基本上添加无限量的资源。

在这种情况下,他们可以存储硬盘的数量和类型。硬盘驱动器类型已经存储在具有所有潜在选项的MySQL数据库表中,因此它们可以选择设置数量,选择驱动器类型(从下拉框中),并根据需要添加更多条目。

由于我不想使用“drive1amount”,“drive1typeid”,“drive2amount”,“drive2typeid”等创建数据库,这样做的最佳方法是什么?

我已经看到类似的问题用多对多链接表回答,但是想不出我怎么能用这个来解决这个问题。

2 个答案:

答案 0 :(得分:0)

您的回答有点依赖于您在此项目中的长期目标。如果您想拥有一个数据存储库,其中包含所有不同类型的硬件设备及其规格的配置文件,我建议您维护每种不同类型硬件的硬件表。例如,您将拥有一个硬盘表,其中包含所有不同型号和类型的硬盘。然后,您可以将此特定表中的记录分配给主机配置表。您可以根据用户的输入建立数据集。

如果您不清楚,请告诉我,我会为您创建一个图表并上传。

答案 1 :(得分:0)

这样的东西?

CREATE TABLE `hardware` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(256) NOT NULL,
 `quantity` int(11) NOT NULL,
 `hardware_type_id` int(11) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `type_id` (`hardware_type_id`),
 CONSTRAINT `hardware_ibfk_1` FOREIGN KEY (`hardware_type_id`) REFERENCES `hardware_type` (`id`)
) ENGINE=InnoDB 

hardware_type_id是现有表的外键

这样表格并不关心它是什么类型的硬件