diff --git a/config/ci_test.yaml.example b/config/ci_test.yaml.example
index eed9cb2bd5d5ada6b33700bfcee60cd13ef22d90..b54a1aae237df296a8163e194d624fbeb757790c 100644
--- a/config/ci_test.yaml.example
+++ b/config/ci_test.yaml.example
@@ -6,9 +6,10 @@ views:
         - config/market_views.yaml.example
     obj:
         -
-            alias: "Seller"
+            alias: "view_Seller"
             data: "test/postgres/fixtures/seller.json"
             origin: true
+            select: true
             dimensions:
                 - "dim:seller:name"
                 - "dim:seller:sex"
diff --git a/config/config.yaml.example b/config/config.yaml.example
index eed9cb2bd5d5ada6b33700bfcee60cd13ef22d90..5cd0b40ff72f6acef039caa21c095679d0516506 100644
--- a/config/config.yaml.example
+++ b/config/config.yaml.example
@@ -6,7 +6,7 @@ views:
         - config/market_views.yaml.example
     obj:
         -
-            alias: "Seller"
+            alias: "view_Seller"
             data: "test/postgres/fixtures/seller.json"
             origin: true
             dimensions:
diff --git a/config/market_main.yaml.example b/config/market_main.yaml.example
index 36893eba1fb0610e0d08079d0031b2aa09e4b1e3..8a240ddafa1f98bde34ba93f6cef9e8861de1a00 100644
--- a/config/market_main.yaml.example
+++ b/config/market_main.yaml.example
@@ -3,7 +3,7 @@ views:
         - config/market_views.yaml.example
     obj:
         -
-            alias: "Seller"
+            alias: "view_Seller"
             data: "test/postgres/fixtures/seller.json"
             origin: true
             dimensions:
diff --git a/config/market_views.yaml.example b/config/market_views.yaml.example
index 5c3580db3ab4f7b8bbba40431f6916d6d1e70a0d..39fa164c2c9703ebddb85d771ef7c8b2d429dd21 100644
--- a/config/market_views.yaml.example
+++ b/config/market_views.yaml.example
@@ -1,7 +1,8 @@
 -
-    alias: "Product"
+    alias: "view_Product"
     data: "test/postgres/fixtures/product.json"
     origin: true
+    select: true
     dimensions:
         - "dim:product:name"
         - "dim:product:validity"
@@ -14,17 +15,19 @@
         - "met:product:max:priceout"
         - "met:product:min:priceout"
 -
-    alias: "Client"
+    alias: "view_Client"
     data: "test/postgres/fixtures/client.json"
     origin: true
+    select: true
     dimensions:
         - "dim:client:name"
         - "dim:client:cpf"
         - "dim:client:id"    
 -
-    alias: "Sell"
+    alias: "view_Sell"
     data: "test/postgres/fixtures/sell.json"
     origin: true
+    select: true
     dimensions:
         - "dim:sell:registered"
         - "dim:product:id"
@@ -36,9 +39,10 @@
         - "met:sell:avg:quantity"
         - "met:sell:count:quantity"
 -
-    alias: "Buyout"
+    alias: "view_Buyout"
     data: "test/postgres/fixtures/buyout.json"
     origin: true
+    select: true
     dimensions:
         - "dim:buyout:datein"
         - "dim:provider:id"
@@ -48,23 +52,26 @@
         - "met:buyout:max:quantity"
         - "met:buyout:min:quantity"
 -
-    alias: "Provider"
+    alias: "view_Provider"
     data: "test/postgres/fixtures/provider.json"
     origin: true
+    select: true
     dimensions:
         - "dim:provider:name"
         - "dim:provider:id"   
 -
-    alias: "Distribute"
+    alias: "view_Distribute"
     data: "test/postgres/fixtures/distribute.json"
     origin: true
+    select: true
     dimensions:
         - "dim:provider:id"
         - "dim:product:id"
 -
-    alias: "ActiveSeller"
+    alias: "view_ActiveSeller"
     data: "test/postgres/fixtures/activeseller.json"
     origin: true
+    select: true
     dimensions:
         - "dim:seller:name"
         - "dim:seller:status"
diff --git a/scripts/schema.ts b/scripts/schema.ts
index 07da0525a2e6aec2e7d1fa3de4aaceedc11beed7..9893828451d8b6e9bf350f83e4f14977227cabd5 100755
--- a/scripts/schema.ts
+++ b/scripts/schema.ts
@@ -53,13 +53,13 @@ for (let i = 0; i < config.buildViews.length; ++i) {
         // Cria uma tabela
         let output = "-- View: " + alias + "\n";
         if (process.env.BLENDB_ADAPTER  === "postgres") {
-            output += "DROP VIEW IF EXISTS view_" + view.id + " CASCADE;\n";
-            output += "CREATE OR REPLACE VIEW view_" +  view.id + " AS\n";
+            output += "DROP VIEW IF EXISTS " + view.getName() + " CASCADE;\n";
+            output += "CREATE OR REPLACE VIEW " +  view.getName() + " AS\n";
         }
 
         else if (process.env.BLENDB_ADAPTER  === "monet") {
-            output += "DROP VIEW view_" + view.id + " CASCADE;\n";
-            output += "CREATE VIEW view_" +  view.id + " AS\n";
+            output += "DROP VIEW " + view.getName() + " CASCADE;\n";
+            output += "CREATE VIEW " +  view.getName() + " AS\n";
         }
 
         else {
diff --git a/src/adapter/postgres.spec.ts b/src/adapter/postgres.spec.ts
index 7bd2ca34d1422cc7c010ec2f6defbaa222ab0a24..acdd1a4f31e1532028f58a4b338848aed4a787f1 100644
--- a/src/adapter/postgres.spec.ts
+++ b/src/adapter/postgres.spec.ts
@@ -37,7 +37,6 @@ describe("Sql adapter", () => {
         // Arrow function not used to get acces to this and skip the test
         const configPath =  process.env.BLENDB_SCHEMA_FILE;
         config = ConfigParser.parse(configPath);
-
         if (config.adapter === "postgres") {
             fixture = new FixPostgres(config.connection);
             fixture.load(config.loadViews, (err) => {
diff --git a/src/adapter/sql.ts b/src/adapter/sql.ts
index 8958805c978b594bb02a148965f025c2b25b19d8..013279e1c30d50a7f823b5b82aecb709793e3f2e 100644
--- a/src/adapter/sql.ts
+++ b/src/adapter/sql.ts
@@ -154,7 +154,7 @@ export abstract class SQLAdapter extends Adapter {
      * @param view - View which the name will be built.
      */
     protected viewName(view: View): string {
-        return "view_" + view.id;
+        return view.getName();
     }
 
     /**
@@ -221,9 +221,9 @@ export abstract class SQLAdapter extends Adapter {
                 if (dimMap[i].views.length > 1) {
                     const views = dimMap[i].views;
                     const dim = dimMap[i].dim;
-                    const leftSide = this.buildColumn(dim, views.shift().id);
+                    const leftSide = this.buildColumn(dim, views.shift().getName());
                     while (views.length > 0) {
-                        const rightSide = this.buildColumn(dim, views.shift().id);
+                        const rightSide = this.buildColumn(dim, views.shift().getName());
                         conds.push("(" + leftSide + "=" + rightSide + ")");
                     }
                 }
@@ -373,9 +373,9 @@ export abstract class SQLAdapter extends Adapter {
      * @param item - Attribute to get the name quoted.
      * @param id - View id used to build the view name.
      */
-    private buildColumn (item: Metric|Dimension, id: string): string {
+    private buildColumn (item: Metric|Dimension, name: string): string {
         const quotedName = "\"" + item.name + "\"";
-        return "view_" + id + "." + quotedName;
+        return name + "." + quotedName;
     }
 
     /**
@@ -404,7 +404,7 @@ export abstract class SQLAdapter extends Adapter {
             return "";
         }
 
-        const viewId = map[filter.target.name].id;
+        const viewId = map[filter.target.name].getName();
         const leftSide = this.buildColumn(filter.target, viewId);
         const quotedValue = "'" + filter.value + "'";
         const castedValue = this.typeCast(quotedValue, filter.target.dataType);
@@ -419,7 +419,7 @@ export abstract class SQLAdapter extends Adapter {
     private translateMetric(metric: Metric, view: View): string {
         const func = this.getAggregateFunction(metric.aggregation, view.origin);
         const quotedName = "\"" + metric.name + "\"";
-        const extMetric = func + "(" + this.buildColumn(metric, view.id) + ")";
+        const extMetric = func + "(" + this.buildColumn(metric, view.getName()) + ")";
         return extMetric + " AS " + quotedName;
     }
 
@@ -434,7 +434,7 @@ export abstract class SQLAdapter extends Adapter {
                                ancestor: Dimension,
                                view: View): DimTranslation {
         const quotedName = "\"" + dimension.name + "\"";
-        let extDimension = this.buildColumn(ancestor, view.id);
+        let extDimension = this.buildColumn(ancestor, view.getName());
         let aux = dimension;
         let expanded = false;
         while (aux.name !== ancestor.name) {
diff --git a/src/core/view.ts b/src/core/view.ts
index 6d15a1dbe9fe4b75fb19a181b09478dbd423e202..ecd87e7c1c18ea86b5d71ffd65a2819162176400 100644
--- a/src/core/view.ts
+++ b/src/core/view.ts
@@ -46,6 +46,10 @@ export interface ViewOptions {
     sort?: (Metric|Dimension)[];
     /** Definition of how to create this view using other views. */
     operation?: Operation;
+    /** Inform if the view's name will be it's alias or id */
+    select?: boolean;
+    /** Fake identifier (human understandable) of the view. */
+    alias?: string;
 }
 
 /**
@@ -54,6 +58,10 @@ export interface ViewOptions {
  * these objects can only be found in views.
  */
 export class View {
+    /** select wich name will be used alias or id */
+    public readonly select: boolean;
+    /** name that can be select from file */
+    public readonly alias: string;
     /** Hash of components that unique identify the clause. */
     public readonly id: string;
     /** Set of metrics contained into the view. */
@@ -68,6 +76,8 @@ export class View {
     public readonly origin: boolean;
     /** Definition of how to create this view using other views. */
     public readonly operation: Operation;
+    /** view's name based on select, which could be id or alias */
+    public readonly name: string;
 
     /**
      * Create a view.
@@ -79,6 +89,8 @@ export class View {
         this.clauses = (options.clauses) ? options.clauses.sort() : [];
         this.sort = (options.sort) ? options.sort : [];
         this.origin = options.origin || false;
+        this.select = (options.select) ? options.select : false;
+        this.alias = (options.alias) ? (options.alias) : "";
         if (options.operation) {
             this.operation = options.operation;
         }
@@ -96,5 +108,14 @@ export class View {
         const clausesIds = this.clauses.map((clause) => clause.id);
         const join = metNames.concat(dimNames).concat(clausesIds).sort();
         this.id = Hash.sha1(join);
+
+        if ( this.select ) {
+            this.name = this.alias;
+        } else {
+            this.name =  "view_" + this.id;
+        }
+    }
+    public getName(): string{
+        return this.name;
     }
 }
diff --git a/src/util/configParser.ts b/src/util/configParser.ts
index 6ebf9d67e4972eedaea42cf8d2200f0b04dbf81c..6931aaacd94b6a749c2e84f0b4fcb4fad4298d4e 100644
--- a/src/util/configParser.ts
+++ b/src/util/configParser.ts
@@ -50,6 +50,8 @@ export interface ViewParsingOptions {
     metrics: string[];
     /** Set of (stringified) clauses applied to the view. */
     clauses?: string[];
+    /** Inform if the view's name will be it's alias or id */
+    select?: boolean;
 }
 
 /**
@@ -300,7 +302,9 @@ export class ConfigParser {
             metrics: [],
             dimensions: [],
             origin: opts.origin,
+            alias: opts.alias,
             clauses: [],
+            select: (opts.select) ? opts.select : false,
             operation: {
                 opcode: Opcode.PUSH,
                 values: []
diff --git a/test/monet/fixture.ts b/test/monet/fixture.ts
index bf6e7eabb00f42b42b427feb9871b03c67934d77..c970f336e7c38f5ea4f41434f2a40413006b3aec 100644
--- a/test/monet/fixture.ts
+++ b/test/monet/fixture.ts
@@ -112,7 +112,7 @@ export class Fixture {
     }
 
     private extractDataView(view: View, filePath: string): string[]{
-        let name = "view_" + view.id;
+        let name = view.getName();
         let data: string[] = [];
         let rows = JSON.parse(fs.readFileSync(filePath, {encoding : "utf8"}));
         for (let i = 0; i < rows.length; ++i) {
@@ -132,7 +132,7 @@ export class Fixture {
     }
 
     private createTransSet(view: View, filePath: string, create: boolean): string {
-        let name = "view_" + view.id;
+        let name = view.getName();
         let init: string = "";
         let props = [];
         for (let i = 0; i < view.metrics.length; ++i) {
diff --git a/test/postgres/fixture.ts b/test/postgres/fixture.ts
index 1142f062e9f9a137ca34be7807c8ae6bea8ac0a4..a3c3d91cdafe099b776afe25e97d0b8e4f15f3bb 100644
--- a/test/postgres/fixture.ts
+++ b/test/postgres/fixture.ts
@@ -122,7 +122,7 @@ export class Fixture {
     }
 
     private extractDataView(view: View, filePath: string): string[]{
-        let name = "view_" + view.id;
+        let name = view.getName();
         let data: string[] = [];
         let rows = JSON.parse(fs.readFileSync(filePath, {encoding : "utf8"}));
         for (let i = 0; i < rows.length; ++i) {
@@ -142,7 +142,7 @@ export class Fixture {
     }
 
     private createTransSet(view: View, filePath: string, create: boolean): string {
-        let name = "view_" + view.id;
+        let name = view.getName();
         let init: string = "";
         let props = [];
         for (let i = 0; i < view.metrics.length; ++i) {
diff --git a/test/scenario.ts b/test/scenario.ts
index 570d6ef8d5c25c70a02e451e5e4517700a4ea9ae..e1be6ff13d70005a3a60f11263e70491cda50e76 100644
--- a/test/scenario.ts
+++ b/test/scenario.ts
@@ -163,19 +163,19 @@ const JoinWithAncestors = ViewHandler.growView({
     metrics: [mets["met:sell:count:quantity"]],
     dimensions: [dims["dim:seller:id"],dims["dim:provider:id"]],
     clauses: []
-},[views["Sell"]]);
+},[views["view_Sell"]]);
 
 const joinWithNoMetrics = ViewHandler.growView({
     metrics: [],
     dimensions: [dims["dim:product:name"],dims["dim:seller:name"]],
     clauses: []
-}, [views["Product"],views["Sell"],views["Seller"]]);
+}, [views["view_Product"],views["view_Sell"],views["view_Seller"]]);
 
 const growOneView = ViewHandler.growView({
     metrics: [mets["met:seller:min:age"]],
     dimensions: [dims["dim:seller:name"],dims["dim:seller:sex"]],
     clauses: []
-}, [views["Seller"]]);
+}, [views["view_Seller"]]);
 
 const multipleClause = ViewHandler.growView({
     metrics: [mets["met:sell:avg:quantity"]],
@@ -183,20 +183,20 @@ const multipleClause = ViewHandler.growView({
     dims["dim:client:name"]],
     // and between filters => (A) and (B)
     clauses: [clauses["expired"],clauses["averageBought"]]
-}, [views["Sell"],views["Seller"],views["Client"],views["Product"]]);
+}, [views["view_Sell"],views["view_Seller"],views["view_Client"],views["view_Product"]]);
 
 const singleClause = ViewHandler.growView({
     metrics: [mets["met:sell:avg:quantity"]],
     dimensions: [dims["dim:sell:datein"],dims["dim:seller:name"],
     dims["dim:client:name"]],
     clauses: [clauses["expiredAndAverage"]]
-}, [views["Sell"],views["Seller"],views["Client"],views["Product"]]);
+}, [views["view_Sell"],views["view_Seller"],views["view_Client"],views["view_Product"]]);
 
 const equalfilter = ViewHandler.queryJoin({
     metrics: [],
     dimensions: [dims["dim:client:name"],dims["dim:product:validity"]],
     clauses: [clauses["lastDay"]]
-},[views["Sell"],views["Client"],views["Product"]]);
+},[views["view_Sell"],views["view_Client"],views["view_Product"]]);
 
 const withSortView = ViewHandler.queryJoin({
     metrics: [mets["met:sell:sum:quantity"]],
@@ -205,7 +205,7 @@ const withSortView = ViewHandler.queryJoin({
     },[ViewHandler.queryReduce({
         metrics: [mets["met:sell:sum:quantity"]],
         dimensions: [dims["dim:client:id"]] 
-    },views["Sell"]),views["Client"]]);
+    },views["view_Sell"]),views["view_Client"]]);
 
 const subDimView = ViewHandler.queryJoin({
     metrics : [],
@@ -214,13 +214,13 @@ const subDimView = ViewHandler.queryJoin({
 [ViewHandler.queryReduce({
     metrics: [],
     dimensions: [dims["dim:sell:datein"]]
-},views["Sell"]),views["Sell"]]);
+},views["view_Sell"]),views["view_Sell"]]);
 
 
 const joinOneView = ViewHandler.queryJoin({
     metrics: [mets["met:product:avg:pricein"]],
     dimensions: []
-},[views["Product"]]);
+},[views["view_Product"]]);
 
 const reduceAsView = ViewHandler.queryReduce({
     metrics: [mets["met:sell:sum:quantity"],mets["met:sell:avg:quantity"],
@@ -228,7 +228,7 @@ mets["met:sell:count:quantity"]],
     dimensions: [dims["dim:sell:registered"], dims["dim:product:id"],
 dims["dim:seller:id"], dims["dim:client:id"],dims["dim:sell:datein"]],
 sort: [mets["met:sell:sum:quantity"]]
-},views["Sell"]);
+},views["view_Sell"]);
 
 const clientAverageBought = ViewHandler.queryReduce({
     metrics: [mets["met:sell:avg:quantity"]],
@@ -237,12 +237,12 @@ const clientAverageBought = ViewHandler.queryReduce({
 },ViewHandler.queryJoin({
     metrics: [mets["met:sell:avg:quantity"]],
     dimensions: [dims["dim:client:name"], dims["dim:seller:id"]]
-},[views["Sell"],views["Client"]]));
+},[views["view_Sell"],views["view_Client"]]));
 
 
-const viewProduct = views["Product"];
+const viewProduct = views["view_Product"];
 
-const viewActiveSeller = views["ActiveSeller"];
+const viewActiveSeller = views["view_ActiveSeller"];
 
 const wrongMet = new Metric({
     name: "met:this:is:just:a:test",
@@ -318,7 +318,7 @@ export const engineScenario: EngineScenario = {
 };
 
 export const adapterScenario: AdapterScenario = {
-    materializedView: views["Product"],
+    materializedView: views["view_Product"],
     sortView: withSortView,
     joinWithOneView: joinOneView,
     singleClause: singleClause,