语言相关的列标题

问题描述

我正在开发一个基于 Postgresql 的应用程序,并且很好奇是否有一个聪明的解决方案来拥有依赖于语言的列标题

我当然知道,我可以使用“as”关键字为标题设置别名,但显然必须为每个选择一遍又一遍地这样做。

所以我有一个表格,用于将技术列名称转换为助记符,以显示用户

我可以处理应用程序中的映射,但更喜欢数据库解决方案。有吗?

至少我可以将列标题设置为 table.column 吗?

解决方法

您可以使用“视图”。您可以将视图视为伪表,它可以使用从查询创建的单个或多个表来创建。例如,如果我有一个具有以下形状的表格

Table: Pets

Id | Name | OwnerId | AnimalType
1  | Frank| 1       | 1
2  | Jim  | 1       | 2
3  | Bobo | 2       | 1

我可以创建一个“视图”,在不更改表格的情况下将名称字段更改为看起来像 PetName

CREATE VIEW PetView AS
    SELECT Id,Name as PetName,OwnerId,AnimalType
    FROM Pets

然后我可以像使用任何其他表一样使用视图

SELECT PetName 
FROM PetView
WHERE AnimalType = 1

此外,我们还可以将另一个表合并到视图中。例如,如果我们将另一个表添加到我们的所有者数据库中,那么我们可以创建一个视图,在进行其他查询之前自动将这两个表连接在一起

Table: Owners

Id | Name
1  | Susan
2  | Ravi

CREATE VIEW PetsAndOwners AS
    SELECT p.Id,p.Name as PetName,o.Name as OwnerName,p.AnimalType
    FROM Pets p,Owners o
    WHERE p.OwnerId = o.Id

现在我们可以像在任何其他表中一样再次使用新视图(用于查询,视图中不支持插入和删除)。

SELECT * FROM PetsAndOwners
WHERE OwnerName = 'Susan'