Как получить табл., на кот. ссылается данное поле.

Тема в разделе "SQL", создана пользователем Oleg, 6 авг 2004.

Статус темы:
Закрыта.
  1. Oleg

    Oleg Гость

    Здравствуйте! Подскажите пожалуйста, как мне через известный relation данной таблицы получить поле (child или parent) этой таблицы и наименование таблицы и поля, на которые найденное поле ссылается (языком SQL).

    Если не понятно мое объяснение, ниже схемка:

    Tab1 Tab(?)
    |_ Col1 <-------relation---------> Col(?) _|

    |_ Col2 Col(?) _|

    Col(?) _|
    Заранее благодарен!
     
  2. Oleg

    Oleg Гость

    Извините, но схемка разъехалась во время создания темы.
     
  3. Pete

    Pete Гость

    Ниче не понятно.
    1. Что такое "известный relation данной таблицы"?
    Насколько я знаю таблица это и есть relation (instance):
    The main construct for representing data in the relational model is a relation. A relation consists of a relation schema and a relation instance. The relation instance is a table... an instance of relation is a set of tuples, also called records.
    Database Management Systems Second Edition. Raghu Ramakrishnan/Johannes Gehrke. McGraw-Hill p. 55

    2. Что за поля child и parent?
    3. Как поле может ссылаться на таблицу? Оно может только идентифицировать запись в другой таблице, если оно используется как Foreign Key.

    Получить информацию о полях и таблицах можно либо зная структуру системных таблиц конкретной базы и написав соотв SQL, либо через какой либо программный интерфейс позволяющий получить метаданные. Кстати, например, mysql не хранит информацию о связи таблиц (схему БД).

    Формулируйте вопрос точнее. Дайте скрипт таблиц. И не плохо было бы услышать какая задача должна быть решена.
     
  4. ????

    ???? Гость

    Pete
    :p
    таблица - entity (сущность)
    связь - relation (отношение)
    а instance можно понимать по разному в разных контекстах.
    Oleg
    Что за СУБД? Скорее всего, данные о структуре базы (таблицы, связи...) будут храниться в системных таблицах и для просмотра тебе будет необходим грант на их выборку или права ДБА. Если ты и есть ДБА, то чего ты паришь?? ;) :)
     
  5. Pete

    Pete Гость

    Entity в том контексте который я знаю (EJB Entity Bean) это скорее запись в таблице или несколько записей в разных таблицах, которые связаны между собой и представляют один объект. Instance понимается вполне однозначно, как в ООП - объект это instance класса, так и таблица это instance отношения. Возможно мы учились по разным книжкам =)
     
  6. Guest

    Guest Гость

    ????, спасибо за поддержку, а то я уже подумал, что действительно что-то написал непонятное. Поясняю вопрос: Я ДБА, но не могу найти в системных таблицах данные о Relation. Причем это надо узнать через SQL-запрос. Известен Relation, надо через него найти связующие таблицы и соответственно поля.
     
  7. Oleg

    Oleg Гость

    Вроде как все должно строиться на SysForegnKey, но не понятно с какими системными таблицами его связывать (там только id). Может есть какие нибудь системные функции?
     
  8. Pete

    Pete Гость

    А какая баз данных?
     
  9. Oleg

    Oleg Гость

    MS SQL 2000
     
  10. Pete

    Pete Гость

    Глянул я в хелп, благо MS SQL у меня установлен

    В таблице sysforeignkeys:
    Для каждого FK
    ID таблицы в которой этот ключ:
    fkeyid int Object ID of the table with the FOREIGN KEY constraint.
    ID таблицы на которую ссылается этот ключ (в которой он является PK)
    rkeyid int Object ID of the table referenced in the FOREIGN KEY constraint.

    Инфу о таблице можно найти в системной таблице sysobjects (но там не только таблицы, но и все объекты, надо отсеивать по полю type = U = User table) используя fkeyid и rkeyid

    Инфу о входящих в FK referenced полях в таблице sysreferences

    Более подробную информацию можно найти в разделе System Tables хелпа
    В Index: system tables, retrieving information
     
  11. Oleg

    Oleg Гость

    Спасибо Pete. Вроде все получилось.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей