使用Ruby/Rails基于信息模式生成MySQL视图
我正在处理一个遗留数据库。命名约定到处都是,而且不一致。我们正在编写一个RubyonRails应用程序,但是很明显,数据库没有很好地使用Rails内置的特性。以下是我们的策略,希望获得一些意见:使用Ruby/Rails基于信息模式生成MySQL视图,mysql,sql,ruby-on-rails,ruby,Mysql,Sql,Ruby On Rails,Ruby,我正在处理一个遗留数据库。命名约定到处都是,而且不一致。我们正在编写一个RubyonRails应用程序,但是很明显,数据库没有很好地使用Rails内置的特性。以下是我们的策略,希望获得一些意见: 创建一个新数据库并将rails应用程序指向该数据库 将旧数据库表/列映射到新的、rails友好的表名/列名 使用map生成视图,以便rails应用程序“认为”这些表是真实的 发展 当rails应用程序准备好接管旧UI并将实际数据迁移到实际表而不是视图时,请返回 我遇到的问题是如何将这个MySQL视图生成
+--------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| database | varchar(64) | NO | | | |
| current_name | varchar(64) | NO | | | |
| current_pk | varchar(64) | YES | | NULL | |
| new_system_prefix | varchar(255) | YES | | NULL | |
| new_format | varchar(255) | YES | | NULL | |
| new_vendor | varchar(255) | YES | | NULL | |
| new_name | varchar(64) | YES | | NULL | |
| new_pk | varchar(64) | YES | | NULL | |
| notes | varchar(255) | YES | | NULL | |
+--------------------+------------------+------+-----+---------+----------------+
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| table_id | int(11) unsigned | YES | MUL | NULL | |
| current_name | varchar(255) | YES | | NULL | |
| current_type | varchar(255) | YES | | NULL | |
| current_default | varchar(255) | YES | | NULL | |
| new_name | varchar(255) | YES | | NULL | |
| new_type | varchar(255) | YES | | NULL | |
| new_default | varchar(255) | YES | | NULL | |
| extra | varchar(255) | YES | | NULL | |
| notes | varchar(255) | YES | | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
列映射:
+--------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| database | varchar(64) | NO | | | |
| current_name | varchar(64) | NO | | | |
| current_pk | varchar(64) | YES | | NULL | |
| new_system_prefix | varchar(255) | YES | | NULL | |
| new_format | varchar(255) | YES | | NULL | |
| new_vendor | varchar(255) | YES | | NULL | |
| new_name | varchar(64) | YES | | NULL | |
| new_pk | varchar(64) | YES | | NULL | |
| notes | varchar(255) | YES | | NULL | |
+--------------------+------------------+------+-----+---------+----------------+
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| table_id | int(11) unsigned | YES | MUL | NULL | |
| current_name | varchar(255) | YES | | NULL | |
| current_type | varchar(255) | YES | | NULL | |
| current_default | varchar(255) | YES | | NULL | |
| new_name | varchar(255) | YES | | NULL | |
| new_type | varchar(255) | YES | | NULL | |
| new_default | varchar(255) | YES | | NULL | |
| extra | varchar(255) | YES | | NULL | |
| notes | varchar(255) | YES | | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
我建议您阅读一些关于反腐败层的内容,这是DDD模式之一。此模式的主要原则是保护您的模型不受与其交互的遗留系统的影响。其中一个选项是创建一个存储库并封装所有处理遗留数据库的查询。存储库将充当旧数据库和新模型之间的转换器。数据库字段到实体的映射也将由存储库完成。这是一个内部应用程序,还是您将在客户端安装它?