Обсуждение: metadata about table columns
Всем привет.
Продолжение темы ГИС, PostGIS и PostgreSQL :)
атрибуты объектов (т.е. колонки в реляционной таблице) могут иметь только названия согласно требованиям именования полей таблиц. Это есть ограничение, т.к. я не могу атрибуту объекта задать удобоваримое название, например, по-русски. А очень хоцца.
Выходов я вижу три.
1) создать таблицу с метаданными, в которой будут хранится удобоваримые названия, эти самые неудобоваримые (названия колонок), а также название реляционной таблицы, в которой эта самая колонка (атрибут) созданы. Т.е. никак не использовать информацию из системного каталога. (pg_class и pg_attribute). Соответственно все операции будут выполняться через специально заданный инструментарий в виде функций и/или триггеров.
2) В таблице с метаданными (как в п.1) использовать внешний ключ на таблицу pg_attribute. Т.е. хранить только удобоваримое название и ссылку на строку в таблице pg_attribute, которая описывает колонку.
3) Не создавать никаких своих таблиц с метаданными, а добавить в системный каталог (alter table pg_attribute) новое поле, которое будет описывать удобоваримое название.
Мне наиболее симпатичен первый вариант. Наименее – третий.
Прав ли я, и возможны ли другие решения?
Сергей Карин
>>>>> Sergey Karin writes:
Sergey> атрибуты объектов (т.е. колонки в реляционной таблице) могут
Sergey> иметь только названия согласно требованиям именования полей
Sergey> таблиц. Это есть ограничение, т.к. я не могу атрибуту объекта
Sergey> задать удобоваримое название, например, по-русски. А очень
Sergey> хоцца.
Не совсем понятно, почему нет?
create table "таблица по русски" ("колонка по русски" text);
select * from pg_attribute where attname = 'колонка по русски' and attrelid = ... ;
--
Sergey Suleymanov
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
---559023410-2032315143-1114014014=:28522
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT
1. с жиру бесишься :)
2. используй view, которые называй как тебе угодно, только rules пиши
On Wed, 20 Apr 2005, Sergey Karin wrote:
> Всем привет.
>
>
>
> Продолжение темы ГИС, PostGIS и PostgreSQL :)
>
> атрибуты объектов (т.е. колонки в реляционной таблице) могут иметь только
> названия согласно требованиям именования полей таблиц. Это есть ограничение,
> т.к. я не могу атрибуту объекта задать удобоваримое название, например,
> по-русски. А очень хоцца.
>
> Выходов я вижу три.
>
> 1) создать таблицу с метаданными, в которой будут хранится удобоваримые
> названия, эти самые неудобоваримые (названия колонок), а также название
> реляционной таблицы, в которой эта самая колонка (атрибут) созданы. Т.е.
> никак не использовать информацию из системного каталога. (pg_class и
> pg_attribute). Соответственно все операции будут выполняться через
> специально заданный инструментарий в виде функций и/или триггеров.
>
> 2) В таблице с метаданными (как в п.1) использовать внешний ключ на таблицу
> pg_attribute. Т.е. хранить только удобоваримое название и ссылку на строку в
> таблице pg_attribute, которая описывает колонку.
>
> 3) Не создавать никаких своих таблиц с метаданными, а добавить в системный
> каталог (alter table pg_attribute) новое поле, которое будет описывать
> удобоваримое название.
>
>
>
> Мне наиболее симпатичен первый вариант. Наименее - третий.
>
>
>
> Прав ли я, и возможны ли другие решения?
>
>
>
> Сергей Карин
>
>
>
>
Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-2032315143-1114014014=:28522--
Эх, вынужден признать, что я этого не знал...
Это очень хорошо, что так можно. Но вот тогда такой вопрос: а как быть с
кодировками?
Например, я создаю атрибут с названием "Новый атрибут". В какой кодировке он
будет? Например, локаль у меня KOI8-R. А потом кто-то отправляет запрос с
этим атрибутом, указывает его название, но кодировка у него другая. Как
быть?
-----Original Message-----
From: Sergey Suleymanov [mailto:solt@eatpbank.ru]
Sent: Wednesday, April 20, 2005 5:51 PM
To: Sergey Karin
Cc: 'pgsql-ru-general'
Subject: Re: [pgsql-ru-general] metadata about table columns
>>>>> Sergey Karin writes:
Sergey> атрибуты объектов (т.е. колонки в реляционной таблице) могут
Sergey> иметь только названия согласно требованиям именования полей
Sergey> таблиц. Это есть ограничение, т.к. я не могу атрибуту объекта
Sergey> задать удобоваримое название, например, по-русски. А очень
Sergey> хоцца.
Не совсем понятно, почему нет?
create table "таблица по русски" ("колонка по русски" text);
select * from pg_attribute where attname = 'колонка по русски' and attrelid
= ... ;
--
Sergey Suleymanov
Sergey Karin wrote:
> Эх, вынужден признать, что я этого не знал...
> Это очень хорошо, что так можно. Но вот тогда такой вопрос: а как быть с
> кодировками?
> Например, я создаю атрибут с названием "Новый атрибут". В какой кодировке он
> будет? Например, локаль у меня KOI8-R. А потом кто-то отправляет запрос с
> этим атрибутом, указывает его название, но кодировка у него другая. Как
> быть?
set client_encoding to ...
>
>
>
>
> -----Original Message-----
> From: Sergey Suleymanov [mailto:solt@eatpbank.ru]
> Sent: Wednesday, April 20, 2005 5:51 PM
> To: Sergey Karin
> Cc: 'pgsql-ru-general'
> Subject: Re: [pgsql-ru-general] metadata about table columns
>
>
>>>>>>Sergey Karin writes:
>
>
> Sergey> атрибуты объектов (т.е. колонки в реляционной таблице) могут
> Sergey> иметь только названия согласно требованиям именования полей
> Sergey> таблиц. Это есть ограничение, т.к. я не могу атрибуту объекта
> Sergey> задать удобоваримое название, например, по-русски. А очень
> Sergey> хоцца.
>
> Не совсем понятно, почему нет?
>
> create table "таблица по русски" ("колонка по русски" text);
> select * from pg_attribute where attname = 'колонка по русски' and attrelid
> = ... ;
>
>
> --
> Sergey Suleymanov
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
--
С уважением,
технический директор ООО "ЦСА"
Николай Газалов
www.sbin.org
+7 8793 365584
(GPG Key ID: 4396B2D0)
>>>>> Sergey Karin writes:
Sergey> Эх, вынужден признать, что я этого не знал... Это очень
Sergey> хорошо, что так можно. Но вот тогда такой вопрос: а как быть
Sergey> с кодировками? Например, я создаю атрибут с названием "Новый
Sergey> атрибут". В какой кодировке он будет?
Как обычно, в кодировке базы.
Sergey> Например, локаль у меня KOI8-R. А потом кто-то отправляет
Sergey> запрос с этим атрибутом, указывает его название, но кодировка
Sergey> у него другая. Как быть?
На то есть client_encoding. Серверу-то все равно что
транслировать.
--
Sergey Suleymanov