首页 > 解决方案 > 以动态方式构建数据库是否可行且是一种好方法?

问题描述

我的问题是关于具体场景以及我应该采取什么方法来使松散耦合和开放/封闭原则成为最佳方式。我将详细解释我的场景,以便您深入了解我所面临的问题。对不起,这将是一个长文本。我真的很抱歉提前。无论如何,谢谢你们。

所以我正在创建一个网站。在该网站上,一种类型的用户可以要求与运输相关的任何类型的服务。(他可能会问他需要将他的货物从一个地方转移到另一个地方,他可能需要为他的客人提供优质的汽车服务,他可能需要建筑运输工具,他可能需要旅行运输工具,所以任何与运输有关的东西) . 另一方面,有一种类型的用户拥有所有这些服务(他们有卡车和司机可以去,拿起客户的货物并将其移动到某个地方,他们有施工卡车,他们有交通工具游览等)。会有不同类型的用户(管理员、客户、service_provider、发行人、银行家、司机)。我已经提到了两种类型的用户(clients 和 service_providers)。

所以要开始创建这样一个复杂的网站,这就是我的决定。管理员是添加传输类型的人。然后管理员还添加了服务(该服务可能具有子子类型)。假设管理员想要添加一项新服务 - 货物移动。然后他还想增加一项新服务——商务舱卡车。考虑到这些服务需要有不同类型的列。所以我们有两个服务。现在,想象一下我能做什么。即使在网站上可能有 15 种不同类型的服务,我也可以只需要两个表的方式构建 mysql 表。

在此处输入图像描述

像这样。这是一种动态的方式。因此,对于每项服务,我都不必以开发人员的身份来为每项服务添加新表。可能发生的情况是,当管理员添加新服务时,他指定名称并将其转到图片上指定的第一个表。然后,如果他希望这个服务成为叶子,他会去为这个服务添加列。(当客户进入那个服务页面并且需要请求特定的业务类或货物移动时需要这些列)。想象一下,如果客户使用货物运输服务,他必须填写表格(货物重量、货物初始地址等。)所以这些属性或列应该由管理员从后端添加。这可能是可能的,而且确实如此。但是现在想象一下,当用户(客户端类型)访问网站并选择货运服务时,我所做的就是使用该 ID,我进行查询并从 service_types 和 service_type_columns 获取结果并生成视图。但是当我展望这个项目的未来时,它可能会变得更加复杂,而且我不知道这种方法(在前端生成动态 mysql 和动态视图就足够了)。

我想我解释了这种情况,也许没有我打算的那么清楚,但你明白了。

我的问题是:我应该采用这种动态方法(动态 mysql - 这样对于服务,我不会去 mysql 并为每个新服务创建新表和不同的列,并在前端动态生成视图)还是我应该为每个服务创建一个新视图,并为每个服务添加新表?我想做的是让管理员从后端创建一个新服务,并且该新服务将开始为所有用户类型工作,而完全不受我的干扰。你怎么看?

标签: mysqllaraveldesign-patterns

解决方案


推荐阅读