Thread: metadata about table columns

metadata about table columns

From
"Sergey Karin"
Date:

Всем привет.

 

Продолжение темы ГИС, PostGIS и PostgreSQL :)

атрибуты объектов (т.е. колонки в реляционной таблице) могут иметь только названия согласно требованиям именования полей таблиц. Это есть ограничение, т.к. я не могу атрибуту объекта задать удобоваримое название, например, по-русски. А очень хоцца.

Выходов я вижу три.

1) создать таблицу с метаданными, в которой будут хранится удобоваримые названия, эти самые неудобоваримые (названия колонок), а также название реляционной таблицы, в которой эта самая колонка (атрибут) созданы. Т.е. никак не использовать информацию из системного каталога. (pg_class и pg_attribute). Соответственно все операции будут выполняться через специально заданный инструментарий в виде функций и/или триггеров.

2) В таблице с метаданными (как в п.1) использовать внешний ключ на таблицу pg_attribute. Т.е. хранить только удобоваримое название и ссылку на строку в таблице pg_attribute, которая описывает колонку.

3) Не создавать никаких своих таблиц с метаданными, а добавить в системный каталог (alter table pg_attribute) новое поле, которое будет описывать удобоваримое название.

 

Мне наиболее симпатичен первый вариант. Наименее – третий.

 

Прав ли я, и возможны ли другие решения?

 

Сергей Карин

 

Re: metadata about table columns

From
Sergey Suleymanov
Date:
>>>>> Sergey Karin writes:

 Sergey> атрибуты объектов (т.е. колонки в реляционной таблице) могут
 Sergey> иметь только названия согласно требованиям именования полей
 Sergey> таблиц. Это есть ограничение, т.к. я не могу атрибуту объекта
 Sergey> задать удобоваримое название, например, по-русски. А очень
 Sergey> хоцца.

         Не совсем понятно, почему нет?

create table "таблица по русски" ("колонка по русски" text);
select * from pg_attribute where attname = 'колонка по русски' and attrelid = ... ;


--
  Sergey Suleymanov


Re: metadata about table columns

From
Oleg Bartunov
Date:
  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--

Re: metadata about table columns

From
"Sergey Karin"
Date:
Эх, вынужден признать, что я этого не знал...
Это очень хорошо, что так можно. Но вот тогда такой вопрос: а как быть с
кодировками?
Например, я создаю атрибут с названием "Новый атрибут". В какой кодировке он
будет? Например, локаль у меня 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

Re: metadata about table columns

From
Nick Gazaloff
Date:
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)

Re: metadata about table columns

From
Sergey Suleymanov
Date:
>>>>> Sergey Karin writes:

 Sergey> Эх, вынужден признать, что я этого не знал...  Это очень
 Sergey> хорошо, что так можно. Но вот тогда такой вопрос: а как быть
 Sergey> с кодировками?  Например, я создаю атрибут с названием "Новый
 Sergey> атрибут". В какой кодировке он будет?

         Как обычно, в кодировке базы.

 Sergey> Например, локаль у меня KOI8-R. А потом кто-то отправляет
 Sergey> запрос с этим атрибутом, указывает его название, но кодировка
 Sergey> у него другая. Как быть?

         На то есть client_encoding. Серверу-то все равно что
         транслировать.

--
  Sergey Suleymanov