mysql - 基于此数据库的较新版本,验证和更新旧 mysql 数据库的结构(表、列)
问题描述
我在 .NET 中构建了一个用于商业用途的 CRM 应用程序。
对于数据库,我选择 MySQL 服务器。
每个新的软件版本都需要更改 MySQL 数据库结构(添加列、添加表、更改列的类型等)。
当我发布更新的软件版本时,我需要找到一种有效的方法
- 根据我的原始(最新)MySQL 数据库验证我客户的数据库
- 如果存在更改,则更新我客户的数据库。
解决方案
让我们从您问题中的陈述开始:
每个新的软件版本都需要更改 MySQL 数据库结构(添加列、添加表、更改列的类型等)。
如果您正在开发商业 CRM 应用程序,那么在每个新版本中都要求更新数据库是一种不好的做法。这意味着糟糕的设计和分析。我在这里评论的重点是,您应该以不需要在每个新版本中更新数据库的方式设计您的应用程序。接下来,在您写的同一语句中:“更改列的类型”。相信我,您不想在存在数据的客户数据库中这样做。您永远不应处于需要更改数据库中包含数据的列的类型的位置。这里没有空间来分析它,但相信我的话。
话虽如此,让我们继续你的问题。如果您正在使用数据库构建商业应用程序,那么您实际上有 3 个关于数据库更新要求的选项。
- 手工做所有事情。从一个版本到另一个版本维护您自己的数据库升级脚本,并根据需要应用它们。这是最痛苦的方式,但它让你可以自由地做你想做的一切。包括更改列的类型。如果您的应用程序相对较小,那么您应该更喜欢这种方法。
- 使用免费的 ORM 库,如Entity Framework。这将使您更灵活地专注于应用程序的业务逻辑,因为它消除了开发人员通常需要编写的大多数数据访问代码的需要。而且有多种方法可以自动迁移数据库。以这里为例。如果您的应用程序对其数据持久性和访问没有任何特殊或不常见的要求,那么您应该这样做。
- 使用像DevExpress XPO这样的商业 ORM 库(如果您不想购买支持,实际上是免费的,但我强烈建议购买)。您将获得 ORM 库的所有好处以及许多增强功能,例如数据过滤自定义、客户端数据处理、更轻松地处理 BLOB 数据(如图像或其他二进制文件)、更广泛的数据库支持(如 SQL Server、MySQL、Oracle、PostgreSQL), Firebird 等。我已经使用 XPO 多年了,我对它非常满意。如果您的应用程序有特殊的数据操作需求,那么我推荐这个。
结论:您绝对应该使用 ORM 库,因为它允许您将应用程序的业务逻辑与数据层分离,并且不会将应用程序与一种类型的数据库绑定,从而为您提供更大的灵活性。例如,您可以创建应用程序的 BOM(业务对象模型)并将其与许多变体一起使用,例如 Web API、桌面客户端、Web 应用程序等。
希望这可以帮助。
推荐阅读
- c++ - 如何将字符数组更改为整数数组?
- python - 尝试安装pyaudio时,无论我在互联网上尝试什么,我的mac都不会
- amazon-web-services - 如何在 AWS 中查找附加到默认安全组的所有服务?
- c++ - 循环链表中不能交换尾节点和首节点
- c# - 将 JSON 解析为列表
- python - 来自 HTML 动态表单的 Django POST 请求
- sql - 如何组合值,以便在运行报告时,与它们关联的值总和为一个最终值?
- javascript - 超级账本结构:只有所有者才能访问私有数据
- python - 我尝试使用硒,但它给出了如下错误:
- laravel - 无法将令牌保存到 laravel 中的个人访问令牌表