Search code examples
firebirdfirebird2.5

Set a global alias for a table and a column?


I'm working with a huge Firebird database where tables have completely unreadable names like WTF$RANDOM_ABBREVIATION_6792 or RPG$RANDOM_ABBREVIATION_5462 where columns have names like "rid9312", "1NUM5", "2NUM4", "RNAME8".

I need to set them global aliases to be able to use them as a full-length table names like Document and column names like

Document.CreationDate instead of xecblob.DDATE4 or

TempDoc.MovingOrderID instead of TMP$LINKED_DOC_6101.DID6101

Altering the database, or a table, or a column might be a big problem because the records might be counted by millions and tens of millions, and more over that, a major part of the Delphi-written front-end for the database is bound to the table names and column names.

Is there a way to do that somehow?


Solution

  • The closest thing there is to a "global alias" is to create views. For example:

    create view document
    as
    select 
      DDATE4 as creationdate
      -- , other columns...
    from xecblob;
    

    or

    create view document (creationdate /*, other column aliases... */)
    as
    select 
      DDATE4
      -- , other columns...
    from xecblob;
    

    (personally, I find the first variant more readable)

    This does require altering the database, but there is no real cost associated with that (it doesn't matter if the table contains no, one, thousands or millions of records).