如果您使用的是关系数据库,那么您的建议几乎是唯一的方法。范式理论会给你更多关于它的信息——关于它的维基百科文章非常好,虽然有点沉重,因为当你进入更高的规范化水平时,它是一个棘手的理论主题。不过,这些例子大多是常识。
假设您有一个 Vehicle 表、一个 Color 表和一个 TyreType 表(对不起英国拼写),您大概定义了一个 VehicleTyre 和 VehicleColour 表,它充当相关表对之间的连接。这种结构实际上是相当健康的。它不仅直接封装了您想要的信息,还可以让您以自然的方式捕捉诸如哪个轮胎是哪个轮胎(例如左前是普利司通 275/35-18)或汽车有多少被涂成红色(例如VehicleColour 表中的百分比字段)。
您可能想要对可以控制轮胎数量的车辆类型实体进行建模。虽然这对于从系统中获取有效的 SELECT 查询不是必需的,但它可能在您的用户界面和确定要插入表中的轮胎数量方面都很有用。
我的公司有很多正是在这个基础上运行的模式——事实上,我们的对象关系框架会自动创建它们来管理多对多关系(有时甚至是一对多关系,具体取决于我们对它们的建模方式)。我们的几个应用程序有 150 多个实体和 100 多个这样的连接表。没有性能问题,也没有对数据的可管理性产生有意义的影响,除了一些表名长得令人讨厌。