-
Есть у БД с набором таблиц. Можно ли хранить описание отношений между таблицами в этой же БД в виде метаданных? Есть ли какие-то стандарты для описания и хранения отношений?
Традиционный подход предполагает, что все отношения задаются на стороне клиента, там реализуется бизнес-логика работы с базой. Мне же нужно, чтобы клиент сначала получал информацию о структуре БД, а потом уже с ней работал.
-
> [0] Unknown_user (04.08.10 16:39) > Традиционный подход предполагает, что все отношения задаются > на стороне клиента, там реализуется бизнес-логика работы > с базой.
Откуда дровишки? Чьи традиции чтите?
-
в нормальных СУБД метаданные так или иначе хранятся и к ним есть доступ, в том числе, у клиента
-
>Откуда дровишки? Чьи традиции чтите?
Ну те же DBase и Paradox хранить информацию о связях между таблицами не умеют. Строго говоря я даже не знаю, кто это умеет делать вообще. Вроде как есть такое в метаданных баз Oracle, но не уверен.
Или я глубоко ошибаюсь?
-
>в нормальных СУБД метаданные так или иначе хранятся и к ним есть доступ, в том числе, у клиента
можно пример из какой-то популярной БД. Например, postgres. меня интересует информация именно об отношениях между таблицами. Например, описание связи внешнего ключа FID таблицы А, c полем ID таблицы B.
-
> [3] Unknown_user (04.08.10 17:46) > Ну те же DBase и Paradox хранить информацию о связях между таблицами не умеют.
А телефон Белла не умел СМС-ки слать.
> Строго говоря я даже не знаю, кто это умеет делать вообще. Это твои трудности.
> Вроде как есть такое в метаданных баз Oracle, но не уверен. Будь уверен. И не только Оракл.
> Или я глубоко ошибаюсь? Никаких или. 8-)
Ты бы описал проблему и/или задачу сразу. А то перечень твоих заблуждений только отвлевает от их решения. 8-)
-
ну чем непонятна задача? я хочу хранить информацию о связях между таблицами в той же БД, что содержит таблицы. Ткните носом, где это в postgres, mysql, sqlite? Очевидно, это должно быть расширение языка SQL для доступа к метаданным?
-
> Ткните носом, где это в postgres, mysql, sqlite?
Ткнись в описания всего перечисленного, для первых двух даже книг для недоначинающих вагон и огромная телега...
-
> Ну те же DBase и Paradox хранить информацию о связях между > таблицами не умеют
строго говоря это и не СУБД
-
-
> Для остальных перечисленных БД, что-то не получается найти > необходимую инфу.
надо еще поискать
-
То есть никто с таким не сталкивался? А еще спорили насчет традиционного подхода :) Вот это и есть традиционный подход, когда связи между таблицами задаются на клиентской стороне (контроль ссылочной целостности не в счет - другая задача).
-
> Вот что нашел для MS SQL. а должен бы искать вот это http://msdn.microsoft.com/en-us/library/ms186778.aspxи изучить то что есть, а не изобретать свой велосипед не научившись инструмент в руках держать. > Для остальных перечисленных БД, что-то не получается найти необходимую инфу. "необходимость" требует пересмотра.
-
> То есть никто с таким не сталкивался? смысл в велосипедах отпадает как только более менее разберешься с инструментом. ну и научишься решать задачи, а не подменять задачу одним методом "решая" его.
-
> Unknown_user (04.08.2010 17:46:03) [3]
Ну так ты сразу и говори, что мне надо для Парадокса, а то все вокруг да около
-
>и изучить то что есть, а не изобретать свой велосипед не научившись инструмент в руках держать. Как обычно нравоучения и никакой конкретики :) Я падаю вам в колени, великие гуру, но ответьте же на вопрос. Если же не знаете, скажите честно - не занимались такой фигней. Задача в самом деле нестандартная, мне нужно создать свой формат хранения, который хотя-бы частично сам себя описывает (так, например, реализован формат HDF5). http://msdn.microsoft.com/en-us/library/ms186778.aspxЭто доступ к метаданным. Можно получить список таблиц заданной БД, список имен полей каждой таблицы, типы данных, ограничения, привилегии и много еще чего... Все кроме связей между таблицами. А почему так? Да, потому что их обычно задают на стороне клиента а не СУБД. Хотя MS SQL позволяет задавать и на стороне сервера, но похоже получить доступ к этим связям можно только так http://msdn.microsoft.com/en-us/library/ms171967.aspxPostgres, Sqlite похоже такой возможности не имеют. Если я не прав, прошу все таки ткнуть носом а не давать общие ссылки.
-
> [15] Unknown_user (05.08.10 10:03) > Задача в самом деле нестандартная, мне нужно создать свой формат хранения
Это не задача, а метод решения (вернее это ты думаешь, что это метод, хотя это еще далеко не факт) какой то прикладной шняги про которую ты ничего не говоришь. Сам по себе твой формат никому не нужен.
В оракле (для примера) есть много системных вьюх, читая которые можно получить представление о схеме данных. Имена вьюх - типа ALL_CONSTRAINTS или USER_TABLES
-
> Все кроме связей между таблицами
Ты просто не умеешь их готовить, смотри REFERENTIAL_CONSTRAINTS На основание INFORMATION_SCHEMA в MS SQL строится диаграма, INFORMATION_SCHEMA содержит полную информацию о схеме.
-
-
Ключевое слово для поиска "Бизнес-логика сервера" Хотя у локальных СУБД, к коим относятся и дибэйс, и парадокс, это действительно не относится
А вообще неплохо бы описать проблему, а не способ ее решения.
-
Всем спасибо. Буду разбираться. К концу топика разговор стал гораздо конструктивнее :)
|