Thread: 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