|
|
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Проблема в следующем. Хочу создать таблицы описывающие структуру прочих таблиц в этой базе данных, а самое главное взаимосвязи между таблицами. Т.е. Pkey и Fkey. Конечная цель. С помощью процедур автоматически формировать скрипты Select к любой таблице. Таблицы описывающие структуру таблиц и полей я сделал. Скрипты выложу чуть позже. А вот описать взаимосвязи, тут проблема. Вернее проблема, как сделать автоматически скрипт учитывающий эти взаимосвязи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 10:18 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceser, Друг! Ты какой СУБД пользуешься? Обычно как правило практически всегда все это уже есть в БД. И лучше не делай "автоматических селектов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 10:26 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
Таблица описывающая таблицы: tblFKI_Table (idTbl, fldName_lat, fldName_Rus, fld....) Таблица описывающая поля таблиц: tblFKI_Field (idFld,idTbl,fldName_lat,fldName_Rus, fldDataType,fldSize,fldPrizPKFK) Таблица взаимосвязей: tblFKI_PKFK(idTblPK,idFldPK,idTblF,idFldF) НАдеюсь описывать каждое поле не надо. fldPrizPKFK- признак первичного или внешнего ключа, idTblPK- код таблицы содержащего первичный ключ, idFldF- код поля являющегося внешним ключом таблицы. и так далее. Некоторые запросы: Select idFld, fldName_lat from tblFKI-Field where idTbl= (select idtbl from tblFki_table where fldName_lat='ADM') Select A.idTbl, B.fldName_lat, A.idFldP, C.fldName_lat, A.idTblF, D.fldName_lat, A.idFldf, E.fldName_lat from tblFKI_PKFK INNER JOIN tblFKI_Table as B ON A.idTblP= B.idTbl INNER JOIN tblFKI_Field as C ON A.idfldP= C.idFld INNER JOIN tblFKI_Table as D ON A.idTblF= D.idTbl INNER JOIN tblFKI_Field as E ON A.idfldE= C.idFld ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 10:38 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
Павел Воронцов, Microsoft SQL Server 2005. А хотелось бы именно автоматически с генерированные скрипты. Хотя можно конечно самому создать таблицу с этими скриптами, и просто администрировать их. Это проще. Но хочется автоматизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 10:40 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
в итоге я хочу автоматически, на основе таблиц создать скрипт: Select A.ADM_id, A.ADM_Name, A.Stan_id, B.Stan_Name, A.fld.... FROM ADM as A INNER JOIN stan AS B ON A.Stan_id = B.Stan_id Из моих таблиц выражение INNER JOIN stan AS B ON A.Stan_id = B.Stan_id вроде можно сделать, но ведь еще в фразу Select необходимо вставить нужное поле в нужное место. А это проблема, уже проблема. А если в одной таблице, более одной связи, то вообще ужас. Дело в том что программа предоставляет доступ на чтение к таблицам базы данных. Это справочная база данных. Периодически появляются новые таблицы, новые взаимосвязи и прочее. А я не хочу администрировать эту базу, нет времени на это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 10:53 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
Павел Воронцов, Да забыл. Исходные данные хранятся в IBM db2 под os\2. Знаю там есть syscomments. Правда я их в глаза еще не видел, если подскажите как да что, то буду благодарен. Да и в СКЛ2005 есть подобное, но в этих метаданных я не спец, если будет что сказать, то скажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 10:57 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceser, http://msdn.microsoft.com/en-us/library/ms189082.aspx Скажите, зачем Вам генерация запросов? Какую задачу Вы решаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 11:01 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceserПавел Воронцов, Да забыл. Исходные данные хранятся в IBM db2 под os\2. Знаю там есть syscomments. Правда я их в глаза еще не видел, если подскажите как да что, то буду благодарен. Да и в СКЛ2005 есть подобное, но в этих метаданных я не спец, если будет что сказать, то скажите.Не понял. То есть Вы с DB2 работаете? Тогда Вам сюда http://www.devx.com/dbzone/Article/29585 например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 11:03 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceser...и в СКЛ2005 есть подобное, но в этих метаданных я не спец, если будет что сказать, то скажите. Чего говорить-то? Не спец, так почитайте , потом занимайтесь велосипедостроительством. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 11:37 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceserПроблема в следующем. Хочу создать таблицы описывающие структуру прочих таблиц в этой базе данных, а самое главное взаимосвязи между таблицами. Т.е. Pkey и Fkey. Конечная цель. С помощью процедур автоматически формировать скрипты Select к любой таблице. Таблицы описывающие структуру таблиц и полей я сделал. Скрипты выложу чуть позже.Так в БД уже есть таблицы, описывающие структуру прочих таблиц. Вам для чего то нужен второй экземпляр??? olceserА вот описать взаимосвязи, тут проблема. Вернее проблема, как сделать автоматически скрипт учитывающий эти взаимосвязиНу, просто нужно его написать, в соответствии со своими требованиями (непонятно, что имеется в виду под "учитывающий эти взаимосвязи"). Или найти готовый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 11:44 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
Павел Воронцов, Спасибо, а на русском есть? А то по аглицки всегда часть смысла улетает у меня. Задача такая. Есть большая справочная БД на IBM DB2. В ней очень много таблиц, которые описывают ту или иную НСИ. Все эти таблицы между собой связаны, ну или большинство из них. Необходимо сделать программу которая может загрузить таблицу пользователю. Ну допустим список имеющихся таблиц я ему предоставляю без проблем (все таблицы что есть в базе). Но имя то на английском и укороченное. Например пользователь видит что есть таблица ADM- а что это за таблица? какие данные в ней хранятся. Ну ладно. Он сделал загрузку данных, вернее просто нажал кнопку run, я ему предоставил данные с именами полей (Select * from ADM). И что он видит: ADM_id, kod, ADM_name......, cor_tip и прочее. И этот простой пользователь меня спрашивает. И ЧЕ ЭТО ЗА ХР....ЕНЬ? При этом, вместо наименования допустим станций , я предоставляю коды станций (ну вернее моя программа предоставляет). Конечно для каждой таблицы я могу сделать в ручную запрос, где подвяжу и имена станций, и другие таблицы и введу русские название полей и прочее. Но это в ручную. При этом таблиц становиться больше, структура их меняется и прочее. Т.е. это головняк. А хочется как. Пользователь включил программу, нажал Коннект, вышел список таблиц на русском языке. Он выбрал таблицу, нажал run, вышла таблица с русскими полями, с наименованиями станций вместо или с кодами. Все. Вся задача. Так вот. Я и хочу автоматизировать создание запроса на выборку. Пока не буду про русский язык. Просто хотя бы наименования станций подвязать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 12:27 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceser, далее. Администраторы iBM DB2 не хотят давать доступ пользователям к своим базам данных, только мне одному. Поэтому я намерен использовать промежуточную базу MS SQL2005. Просто она мне больше нравиться, легче в ней работать, да и знаю я ее по лучше. Поэтому я могу использовать как функционал ДБ2, так и СКЛ2005. Поэтому и спросил про метаданные в ДБ2? Повторюсь. можно сделать таблицу с заранее подготовленными запросами. А там уже программа будет ее подключать для формирования запросов к таблицам. Это просто , но трудоемко. Я хочу сделать процедуру, которая по имени таблицы , делала бы запрос к ней с учетом всех Внешних и первичных ключей. Просто нет у меня времени администрировать эту базу и желания нет. Пусть БД сама контролирует свое содержимое , а программа сама берет таблицы и их связи. Конечно ваши статья я по читаю. Но по русски нет? По англ понимаю, но плохо. Особенно по ДБ2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 12:42 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
baracs, Спасибо. Проштудирую, а про ДБ2 по русски нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 12:44 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
alexeyvg, 1. конкретно какие таблицы, статью ? 2. то то и оно что не хочу каждый раз при изменении структуры БД в ручную что то писать. за этим надо следить, за изменениями, а я не имею на это время и желанья. ХОчу чтобы база сама все делала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 12:46 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceserЗадача такая. Есть большая справочная БД на IBM DB2. В ней очень много таблиц, которые описывают ту или иную НСИ. Все эти таблицы между собой связаны, ну или большинство из них. Необходимо сделать программу которая может загрузить таблицу пользователю. Ну допустим список имеющихся таблиц я ему предоставляю без проблем (все таблицы что есть в базе). Но имя то на английском и укороченное. Например пользователь видит что есть таблица ADM- а что это за таблица? какие данные в ней хранятся. Ну ладно. Он сделал загрузку данных, вернее просто нажал кнопку run, я ему предоставил данные с именами полей (Select * from ADM). И что он видит: ADM_id, kod, ADM_name......, cor_tip и прочее. И этот простой пользователь меня спрашивает. И ЧЕ ЭТО ЗА ХР....ЕНЬ? При этом, вместо наименования допустим станций , я предоставляю коды станций (ну вернее моя программа предоставляет). Конечно для каждой таблицы я могу сделать в ручную запрос, где подвяжу и имена станций, и другие таблицы и введу русские название полей и прочее. Но это в ручную. При этом таблиц становиться больше, структура их меняется и прочее. Т.е. это головняк. А хочется как. Пользователь включил программу, нажал Коннект, вышел список таблиц на русском языке. Он выбрал таблицу, нажал run, вышла таблица с русскими полями, с наименованиями станций вместо или с кодами. Все. Вся задача. Так вот. Я и хочу автоматизировать создание запроса на выборку. Пока не буду про русский язык. Просто хотя бы наименования станций подвязать. Прочитай про Busines Objects и др. подобные средства ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 12:48 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
--------------------------------, Друг, а где почитать и по русски желательно? Да может кратко расскажешь что это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 13:18 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceserbaracs, ...а про ДБ2 по русски нет? Я не в курсе. Вообще, жутковато ваша постановка задачи выглядит. Давать пользователям, не знающим структуры базы, лазить по всем таблицам... Да еще, динамическими запросами... Сколько таких пользователей будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 13:33 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceseralexeyvg, 1. конкретно какие таблицы, статью ? 2. то то и оно что не хочу каждый раз при изменении структуры БД в ручную что то писать. за этим надо следить, за изменениями, а я не имею на это время и желанья. ХОчу чтобы база сама все делала. Представления информационной схемы Представления каталога Представления каталога объектов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 15:24 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceser, вам намекают, что вся та информация, которую вы ищете уже находится в БД. Т.е. и список таблиц, список полей, ключи, связи - уже есть в базе данных. И они автоматически поддерживаются системой. Как правило, это системные таблицы (для каждой СУБД свои заморочки), либо представления. Также можно использовать описание метаданных (описания таблиц и полей) на русском языке и использовать у себя в качестве альтернативного именования (на клиенте, конечно, придется строить интерфейс). Ну насчет автоматической связи таблиц - тут все же что-то не так. Ну можно ограничиться одним уровнем вложенности, а в противном случае есть шанс забрать на клиента всю БД одной таблицей). Есть же еще представления (view) для таких задач. Многие БД понимают русские наименования полей, если уж на клиенте не хочется городить огород. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 20:46 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
baracs, 1. ну пользователей не известно сколько точно. Это база, так сказать, с перспективой. Поэтому пользователей от десятка, до тысячи может быть. 2. это же просто select. причем из программки клиента, и не более того. Пользователям ничего редактировать нельзя будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 22:53 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
dymka, Про то что в СУБД есть таблицы метаданных я уже давно знаю, правда практически с этим не работал. Но придется поднять ссылки которые мне здесь выкладывают, да литературу, если что. Просто я ищу свой путь :-), ну как суверенная демократия. Хотелось бы все контролировать. Да и при том, что там с русскими названиями? В метаданных они есть? И таблиц, и полей. Да еще, такая особенность. Сам база на ДБ2, а для доступа клиентов буду использовать МССКЛ2005, т.е. метаданные ДБ2 надо будет перенести в МС. Так что проще, может быть, в МС сделать служебные таблицы подобного типа? Может и нет. В общем, пока я все больше склоняюсь к средствам СУБД, но и решить мою задачку, тоже интересно. Да, забыл. ХОрошо. Описание таблиц я возьму из метаданных СУБД. Все, они у меня есть. А как с помощью них сделать динамический запрос (ну без моего прямого участия). Ну например раз в сутки процедурно сформировать такую таблицу: tblSQLANSI (idTable, fldName_tbl, fldSQLquery) Ну потом из программы читаю поле fldSQLquery и делаю запрос к ДБ2. Вроде не плохо. Можно такую таблицу конечно в ручную сделать. И потом контролировать изменения в БД, и все время изменять таблицу tblSQLANSI. Но не хочу я администрировать базу. Не хочу. У меня просто нет времени. Сейчас у меня есть программа, которая просто выводит список имен таблиц, пользователь выбирает нужную, нажимает run, и она у его ног. Но это просто тупой select * from (хотя у пользователя есть возможность делать where) но это слишком не красиво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 23:13 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceserДа и при том, что там с русскими названиями? В метаданных они есть? И таблиц, и полей.Да, есть в сиквеле свойства для таких описаний. olceserметаданные ДБ2 надо будет перенести в МСВОт насчёт ДБ2 не знаю, спрашивайте в соотв. форуме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 23:14 |
|
||
|
Описание структуры БД в самой БД
|
|||
|---|---|---|---|
|
#18+
olceserbaracs, 1. ну пользователей не известно сколько точно. Это база, так сказать, с перспективой. Поэтому пользователей от десятка, до тысячи может быть. 2. это же просто select. причем из программки клиента, и не более того. Пользователям ничего редактировать нельзя будет. 10 пользователей, может, и смогут так работать... А несколько сотен уже будут орать не "ЧЕ ЭТО ЗА ХР....ЕНЬ?", а "Че, б...ть, все висит?!". А вы и знать не будете что делать с этими селектами, даже если выловите профайлером самые тормозные... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2011, 12:02 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37336783&tid=1542097]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
390ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 677ms |

| 0 / 0 |
