为 table 和列设置全局别名?
Set a global alias for a table and a column?
我正在使用一个巨大的 Firebird 数据库,其中 table 具有完全不可读的名称,如 WTF$RANDOM_ABBREVIATION_6792
或 RPG$RANDOM_ABBREVIATION_5462
,其中列的名称如“rid9312
”, "1NUM5
", "2NUM4
", "RNAME8
".
我需要为它们设置全局别名,以便能够将它们用作全长 table 名称,如 Document
和列名称,如
Document.CreationDate
而不是 xecblob.DDATE4
或
TempDoc.MovingOrderID
而不是 TMP$LINKED_DOC_6101.DID6101
改变数据库,或 table,或列可能是一个大问题,因为记录可能有数百万和数千万,甚至更多, Delphi-写前端为数据库绑定table名和列名。
有没有办法做到这一点?
最接近“全局别名”的是创建 views。例如:
create view document
as
select
DDATE4 as creationdate
-- , other columns...
from xecblob;
或
create view document (creationdate /*, other column aliases... */)
as
select
DDATE4
-- , other columns...
from xecblob;
(就我个人而言,我发现第一个变体更具可读性)
这确实需要更改数据库,但没有与之相关的实际成本(table 是否包含一条、几千条或几百万条记录都没有关系)。
我正在使用一个巨大的 Firebird 数据库,其中 table 具有完全不可读的名称,如 WTF$RANDOM_ABBREVIATION_6792
或 RPG$RANDOM_ABBREVIATION_5462
,其中列的名称如“rid9312
”, "1NUM5
", "2NUM4
", "RNAME8
".
我需要为它们设置全局别名,以便能够将它们用作全长 table 名称,如 Document
和列名称,如
Document.CreationDate
而不是 xecblob.DDATE4
或
TempDoc.MovingOrderID
而不是 TMP$LINKED_DOC_6101.DID6101
改变数据库,或 table,或列可能是一个大问题,因为记录可能有数百万和数千万,甚至更多, Delphi-写前端为数据库绑定table名和列名。
有没有办法做到这一点?
最接近“全局别名”的是创建 views。例如:
create view document
as
select
DDATE4 as creationdate
-- , other columns...
from xecblob;
或
create view document (creationdate /*, other column aliases... */)
as
select
DDATE4
-- , other columns...
from xecblob;
(就我个人而言,我发现第一个变体更具可读性)
这确实需要更改数据库,但没有与之相关的实际成本(table 是否包含一条、几千条或几百万条记录都没有关系)。