2013-04-02 6 views
2

Можно ли перевести между двумя различными схемами базы данных, возможно, используя разные СУБД, чтобы пользователь мог запросить представление промежуточной схемы и запрос был переведен в базовый sql-запрос для возврата результатов.Перевод между различными схемами базы данных с аналогичными атрибутами

Пример

Underlying database  Intermediate Representation 
-------------------- -------------- 
| _____ _____ |  | _______ | 
|| Men | |Women| |  | |People | | 
||-----| |-----| |  | |-------| | 
||Name:| |Name:| |---->| |Name: | | 
||Age: | |Age: | |  | |Age: | | 
||_____| |_____| |  | |Gender:| | 
|     |  | |_______| | 
|_________________|  |___________| 

Я хотел бы запрос на промежуточном представлении таких как

SELECT * FROM People WHERE Gender == "Male"; 

Для того чтобы перевести на основной базе данных, чтобы

SELECT * FROM Men; 
+0

Вы знакомы с [просмотров] (http://en.wikipedia.org/wiki/View_ (база данных))? –

+0

Я слышал о них, но я бы не сказал, что я знаком. Я рассмотрю это, спасибо – 2013-04-02 04:42:07

ответ

0
create table men (
    name varchar(255) primary key, 
    age smallint not null 
); 

create table women (
    name varchar(255) primary key, 
    age smallint not null 
); 

create view people as 
    select 
    name, 
    age, 
    'Male' as gender 
    from men 
    union 
    select 
    name, 
    age, 
    'Female' as gender 
    from women; 

запрашивая:

insert into men values ('John', 25); 
insert into women values ('Jane', 25); 

select * from people where gender = 'Male'; 

Результат:

Name Age Gender 
John 25 Male 

Fiddle с ним:

http://sqlfiddle.com/#!15/85939/2