应用程序和数据库架构

每当我设计一个数据库(当前为SQL Server)时,我总是想知道如果将来我不得不迁移到另一个数据库(Oracle,MySql)是一种考虑一些重要参数(如命名约定(表,列长度),数据类型等。我经常问自己以下问题:

我应该命名我的表格,列复数/描述性? 我应该在表格/列的前面添加下划线还是名称中的其他标识符? 名称应该是特殊/特定的外壳?

我试图从发展的角度来看待设计,即.NET(由初级技能组成),因此应该有任何存储过程? 如果不是简单迁移的替代方案? 是否有建议的指导方针,有人可以建议考虑数据库和.NET设计架构?


从一种数据库类型转换为另一种数据库实际上非常罕见:35年来,我已经完成了一次:从Oracle到SQL Server。 那是一个特殊的情况:一个运行在VAX上的非常旧的版本的Oracle,多年来一直没有得到任何人的支持,必须摆脱它。 管理层下令(正确地说,我认为)作为标准DBMS,我们当时使用的是QL Server,系统应该被转换。

MS有一个转换工具,我们使用它。 我工作得很好,但由于PL / SQL与T / SQL非常不同,复杂的存储过程在工作时不可维护,速度很慢,因此我们从头开始重新编写T / SQL - 这花费了很多时间。 但这是唯一的问题。

我个人的做法是尽量减少SP的使用。 如果你在SP中逐行处理游标,那么我认为你做错了。 任何处理RAT(一次一行)的代码应该在代码中; 任何可以处理数据集的数据都应该在SP中。

除非你有理由认为你需要转换,否则我不会担心。 如果你这样做,只要你用命名约定做了明智的事情,就不会有问题。 你会遇到的问题是:

  • T / SQL代码不容易转换为PL / SQL(不知道MySQL语言,但我会承担问题)
  • 分层查询(CTE)不会翻译,而必须为Oracle重新编写。 它们不支持MySQL AFAIK。
  • 从IDENTITY列转换为Oracle序列不应该是一个大问题(或者Oracle现在是否支持更接近的东西?)不知道其他DBMS的。
  • 但正如我所说,这不是我通常担心的事情。


    您是否尝试使用ORM,例如使用代码优先方法的实体框架? 它有助于避免代码中特定于数据库的内容,它还提供了非常灵活的迁移机制。

    链接地址: http://www.djcxy.com/p/41315.html

    上一篇: Application & Database architechture

    下一篇: Database, Table and Column Naming Conventions?