Форум: "Базы";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизРБД без взаимосвязанных таблиц??? Найти похожие ветки
← →
Alexandr1 (2005-11-22 17:34) [0]Подскажите, является ли БД реляционной, если некоторые таблицы не взаимосвязанны (не содержат внешних ключей)? Если можно, то укажите ссылки на литературу.
Заранее благодарен.
← →
Desdechado © (2005-11-22 17:42) [1]справочники могут не содержать этих внешних ключей, но зато на них могут ссылаться
могут быть таблицы-свалки без ключей, хотя это несколько анархией попахивает
могут быть служебные таблицы, на которые нет ссылок и которые сами ни на что не ссылаются, но они участвуют в бизнес-логике (например, в ХП)
← →
ANB © (2005-11-22 17:59) [2]Если я ничего не путаю, то реляционными бывают СУБД. А как ты в нее базу запихаешь - твои личные проблемы. Я видел много примеров БД без ограничений (внешних ключей). Ссылочная целостность поддерживалась триггерами и/или пакетами.
← →
Desdechado © (2005-11-22 18:15) [3]таблицы взаимосвязаны могут быть по-разному (FK или триггеры ...)
автор спрашивает, видимо, о вообще отвязанных таблицах
← →
ANB © (2005-11-22 18:47) [4]
> Desdechado © (22.11.05 18:15) [3]
У нас сейчас БД, в которой вообще никак не поддерживается. При этом логические связи есть.
← →
Desdechado © (2005-11-23 11:26) [5][4]
а вот это - гниль, имхо
хотя варианты невозможности организации в РСУБД логических связей я тоже могу придумать, но тогда это просто попытка уложить в прокрустово ложе РСУБД данных, которые таковыми не являются
для них есть другие подходы, хотя и не очень популярные
← →
by © (2005-11-23 11:33) [6]Desdechado © (23.11.05 11:26) [5]
а вот это - гниль, имхо
У меня был вариант приложения, в котором не было FK, вся ссылочная целостность обеспечивалась тригерами. Так как данные вносились только из приложения, то логическую целостность обеспечивало он. А вот при удалении были плюсы, так как в тригер можно было написать Exception осмысленный, который говорил почему именно нельзя удалять данную запись. А не просто сказать что на неё есть ссылки.
← →
Sergey13 © (2005-11-23 11:44) [7]2 [6] by © (23.11.05 11:33)
В моей практике (в случаях, когда часть системы уже работает в продакшене а остальное активно дописывается) практически всегда после некоторого времени вылезаи или "левые" записи или не было "нужных" записей, которые там должны быть. Я так понял, что тригеры иногда не срабатывают - они могли быть например не валидны какое то время по причине смены структуры БД или просто не учитывали некоторых нюансов. Другими словами для полностью готовой системы - это прокатит (может прокатить), для развивающейся - не всегда.
← →
dioman © (2005-11-23 11:46) [8]реляционная база данных - это та где данные хранятся ввиде ТАБЛИЦ...
а отношения между таблицами это уже фича. То есть можешь иметь 1 таблицу, никаких отношений... и смело говорить что это реляционная база данных.
← →
ANB © (2005-11-23 12:16) [9]
> Desdechado © (23.11.05 11:26) [5]
> [4]
> а вот это - гниль, имхо
А кто спорит ? Исторически сложилось. Причем связки явно напрашиваются на внешние ключи, но никто их делать не собирается. Поддерживается клиентом.
← →
Val © (2005-11-23 12:27) [10]>[8] dioman © (23.11.05 11:46)
Не смешите людей. От чего, как вы думаете, произошло слово "реляционная"?
>[7] Sergey13 © (23.11.05 11:44)
а как же alter table mytable disable constraint my_constraint ? ;) думаю, немножко не тот аргумент, хотя и за очень правильную идею. Согласен, в рабочей базе НЕ ДОЛЖНО быть ни некативных триггеров, ни ограничений.
> All
Коллеги, классически, в теории, считается, что связь между таблицами обеспечивают именно внешние ключи, триггеры - по сути хп для выполнения опр.действий при работе с таблицами, как вы понимаете, а что вы в них зашьете.... А кто как обеспечивает ссылочную целостность _в_своих_ разработках - его личное дело.
← →
Desdechado © (2005-11-23 12:30) [11]Поддержка на триггерах опасна, ибо они могут быть отключены (FK в оракле, правда, тоже), могут быть инвалидны, и - самое опасное - триггер работает в контексте транзакции, а constraint - в контексте БД (что действительно гарантирует целостность и непротиворечивость данных, в отличие от триггеров).
А в заявления вида "данные только из клиентской программы", надеюсь, никто сам не верит, ибо шибко вумные юзера найдутся всегда, да и кто сам вручную для каких-то сверхнеобходимых дел в БД не лез, позабывши часть ограничений - вот тут constraint"ы и сообщат о себе...
← →
Desdechado © (2005-11-23 12:32) [12]реляция - отношение, отношение МЕЖДУ таблицами, т.е. их взаимосвязь
← →
dioman © (2005-11-23 12:36) [13]
> Val © (23.11.05 12:27) [10]
> Desdechado © (23.11.05 12:32) [12]
открываем учебники читаем определения.
а английский язык многие знают.
← →
Sergey13 © (2005-11-23 12:37) [14]2[10] Val © (23.11.05 12:27)
>а как же alter table mytable disable constraint my_constraint
Это немного не то. Когда сам отключаешь, наверное знаешь зачем и что будет. А вот когда это происходит прозрачно для программиста (а если там еще и группы программистов по малосвязанным направлениям!!!), то это другое дело. Ну добавил я поле в таблицу (да размерность просто изменил!!!). Кто ж думал, что станет невалидной 5 процедур и 14 тригеров - они же все "не мои" и я про них не знаю даже.
← →
Val © (2005-11-23 12:37) [15]>[13] dioman © (23.11.05 12:36)
плохие у вас учебники, видимо.
← →
Val © (2005-11-23 12:43) [16]>[14] Sergey13 © (23.11.05 12:37)
:) Сергей, ну это может сделать кто угодно, тот же саппорт, латая по-быстрому дырку какую-нибудь, делая апдейт, например, а enable не прошел у него, но он не увидел/запарился/забыл...
Кто ж думал, что станет невалидной 5 процедур и 14 тригеров - они же все "не мои" и я про них не знаю даже
врядли вы так делаете :) зависимости-то компилить надо, после того как вы табличку ковыряли - тем более, видели перед началом компиляции, что они валидны...такое дело...спорить не о чем, думаю.
← →
dioman © (2005-11-23 12:44) [17]Val © (23.11.05 12:37) [15]
я совершенно серьезно.
существуют иерархические сетевые реляционные (табличные.. там где поялвяются понятия строк и слолбцов)... и проч... виды хранения информации
← →
Sergey13 © (2005-11-23 12:52) [18]2[16] Val © (23.11.05 12:43)
Да все понятно. Но отключенное мной специально и отключившееся "САМО" в результате моих действий - это все таки разные вещи. И я лично предпочитаю констрейнты тригерам как более надежное средство.
>зависимости-то компилить надо
1. Это надо еще и знать, что надо
2. Это надо еще и помнить.
8-)
← →
__гфф (2005-11-23 12:55) [19]не гоните на диомана! он прав.
Реляционной считается такая база данных, в которой все данные представлены для пользователя в виде прямоугольных таблиц значений данных, и все операции над базой данных сводятся к манипуляциям с таблицами
http://www.jetinfo.ru/1995/3-5/1/rdbms.basics.html
да и вообще, гугле вам поможет
>> реляция - отношение, отношение МЕЖДУ таблицами, т.е. их взаимосвязь
отношение - это отдельное понятие, это, по-простому, таблица.
УЧИТЕ МАТЧАСТЬ!
← →
Вольный Стрелок © (2005-11-23 13:00) [20]ай-ай!
теория без практики мертва...
← →
__гфф (2005-11-23 13:02) [21]Удалено модератором
← →
Nikolay M. © (2005-11-23 13:03) [22]
> > Val ©
> > Desdechado ©
РБД - это такая БД, где информация представлена в виде двумерных массивов (таблиц). Все. Не надо путать мух с котлетами и приплетать сюда всякие тригеры, констрейнты, логические связи и тд.
Кто не верит, может почитать Кодда в оригинале.
← →
Desdechado © (2005-11-23 13:12) [23]Кодд, конечно, авторитет.
Оспаривать не буду, ибо действительно деталей определения РБД не помню.
Но мое имхо, РБД из несвязанных таблиц - обычная свалка, а ее разработчик - неуч. Причем это уже вина не Кодда, который недостаточно определил РБД, а конкретных разработчиков.
Несколько резко, но зато по сути.
← →
msguns © (2005-11-23 13:35) [24]Класс !!! Вот, читаешь иногда людей грамотных и удивляешься:
>dioman © (23.11.05 11:46) [8]
>реляционная база данных - это та где данные хранятся ввиде ТАБЛИЦ...
>Nikolay M. © (23.11.05 13:03) [22]
>РБД - это такая БД, где информация представлена в виде двумерных массивов (таблиц). Все
>__гфф (23.11.05 12:55) [19]
>Реляционной считается такая база данных, в которой все данные представлены для пользователя в виде прямоугольных таблиц значений данных, и все операции над базой данных сводятся к манипуляциям с таблицами
http://www.jetinfo.ru/1995/3-5/1/rdbms.basics.html
да и вообще, гугле вам поможет
>отношение - это отдельное понятие, это, по-простому, таблица.
Два вопроса:
1. Ексель - это РБД ? Что значит фраза "храняться в виде таблиц" ? Это в смысле на HDD нарисована таблица-сетка, куда "вкладываются" данные ?
2. Может, вместо гугля иногда неплохо бы и что-нибудь сугубо теоретическое почитать ? В смысле книжек.
Кто-нибудь из вас когда-нибудь работал с нереляционными БД ? Наверное, нет. Ибо не несли бы здесь тогда такую чушь ;)
← →
msguns © (2005-11-23 13:37) [25]Кстати, рекомендую одного из столпов РБД - Кнута.
← →
__гфф (2005-11-23 14:15) [26]не понял, че за наезд..
а чем Вам таблицы в экселе не база данных?
признаюсь честно, с нереляционными БД работать не приходилось
ну и кстати, на счет гугля.. я упомянул это потому что это САМЫЙ простой и быстрый способ ткнуть носом.
с технологией баз данных я знакомился, естественно, не в гугле :))
← →
__гфф (2005-11-23 14:17) [27]msguns ©, простите за назойливость, а Вам приходилось работать с нереляционными БД? ;)
← →
__гфф (2005-11-23 14:19) [28]>> Ексель - это РБД ?
и кстати, Вы не представляете, наверное, что можно делать в экселе
это очень мощная штука
в экселе можно даже строить олап-кубы
← →
__гфф (2005-11-23 14:24) [29]>> Кстати, рекомендую одного из столпов РБД - Кнута.
весь мир изучает БД по Кодду, а не по Кнуту, имхо. Может я отстал от жизни, не знаю. Кто же ввел основные понятия? Нормальные формы? О чем мы вообще говорим?!
← →
dioman © (2005-11-23 14:26) [30]
> Desdechado © (23.11.05 13:12) [23]
> Причем это уже вина не Кодда, который недостаточно определил
> РБД, а конкретных разработчиков.
ого... действительно резко.
> msguns © (23.11.05 13:35) [24]
</I
> Это в смысле на HDD нарисована таблица-сетка, куда "вкладываются"
> данные ?
>
Вы над кем смеетесь? наверное над собой
← →
__гфф (2005-11-23 14:40) [31]>> Это в смысле на HDD нарисована таблица-сетка, куда "вкладываются" данные ?
ЛОЛ
>> Ексель - это РБД ?
кто-то мне говорил, что к таблицам в экселе можно даже обращаться через АДО, пишешь коннекшн стринг и вперед!
правда сам не пробовал, утверждать не буду.
← →
ANB © (2005-11-23 14:47) [32]
> правда сам не пробовал, утверждать не буду.
Я пробовал. Правда не всегда получается - желательно у таблицы одни заголовки колонок оставить и данные - но работает.
← →
__гфф (2005-11-23 14:52) [33]еще раз гугле..
два слова, и вот! How To Use ADO with Excel Data from Visual Basic or VBA
http://support.microsoft.com/default.aspx?scid=kb;EN-US;257819
← →
Val © (2005-11-23 14:56) [34]Скажите-ка - база из одной таблицы, например, является реляционной по-вашему? Что же там с чем "реляцирует"? Экселя формат, текст, бинарник - пофиг, это лишь вид представления информации - все реляционное, скажете, главное чтоб столбик и строчка?
← →
Val © (2005-11-23 14:58) [35]>[33] __гфф (23.11.05 14:52)
уж если вы сейчас открываете для себя возможность коннекта к экселю, как чудо некое...
← →
__гфф (2005-11-23 15:03) [36]>> база из одной таблицы, например, является реляционной по-вашему?
да.
>> Что же там с чем "реляцирует"?
что Вы зациклились на этом слове?
relation (eng) - отношение. Отношение - это ключевое понятие в теории баз данных. Отношение столбцов и строк.
Ну вот честное слово, просто время есть, не стал бы даже отвечать ничего..
вообще, суть ответа на вопрос нити обсуждения - РТФМ!
← →
__гфф (2005-11-23 15:05) [37]>> уж если вы сейчас открываете для себя возможность коннекта к экселю, как чудо некое...
а Вас это удивляет? Просто не приходилось сталкиваться с этим, Бог уберег. У меня еще широчайшее поле для самосовершенствования!
← →
dioman © (2005-11-23 15:07) [38]
> Val © (23.11.05 14:56) [34]
Да согласитесь вы наконец-то или нет...?
> Val © (23.11.05 14:58) [35]
>
> >[33] __гфф (23.11.05 14:52)
> уж если вы сейчас открываете для себя возможность коннекта
> к экселю, как чудо некое...
вот уж не знаю что хуже.. не знать что есть драйвер для коннекта к екселю... или не знать что такое РБД...
← →
__гфф (2005-11-23 15:13) [39]Удалено модератором
← →
Val © (2005-11-23 15:21) [40]Удалено модератором
← →
dioman © (2005-11-23 15:29) [41]Удалено модератором
Примечание: Сейчас закроем тебя
← →
__гфф (2005-11-23 15:33) [42]Удалено модератором
Примечание: Офтопик
← →
__гфф (2005-11-23 15:41) [43]Удалено модератором
← →
Sergey13 © (2005-11-23 15:44) [44]Удалено модератором
Примечание: Офтопик
← →
Anatoly Podgoretsky © (2005-11-23 15:44) [45]Реляционные означает что данные получаются в соответствии с операциями отношений, например Fld>N
← →
dioman © (2005-11-23 15:47) [46]Удалено модератором
← →
msguns © (2005-11-23 15:48) [47]>Val © (23.11.05 15:21) [40]
>ля-ля-ля :)
Ля-ля не ля-ля, а доля правды есть.
Строго научно в РБД любое поле любой таблицы является отношением (relation).
По сабжу.
РБД "понимает" отношения в виде полей (колонок таблицы), одного смыслового назначения (упрощенно - типа) о единственном (атомарном) свойстве некоего объекта. Кстати в мануалах на англицком по некоторым буржуинским БД часто-густо вместо "Field" используется "Relation".
Чем в корне отличается от Экселя, у которого нет полей, зато есть ячейки, в которых можно хранить любую информацию о любом объекте или даже нескольких одновременно. Именно потому Эксель не "располагает" аппаратом манипулирования хранящимися в его таблицах данными обобщенно, что свойственно РБД.
Пример простейшей не РБД-базы - любой ini-файл. Та же База Данных, но вовсе не реляционная.
Понятие "реляционное" впервые встретил у Кнута, где он описывал "традиционное" на тот момент фиксированное следование полей (опять же фиксированной длины), которое использовалось при хранении данных в файлах программами Cobol (на счет языка не уверен) и, естественно порядок и длину задавала программа, которые эти данные записывала. Программа-приемник данных должна была читать эти файлы и "разбирать" информацию в том же порядке, что и пишущая. При малейшем изменении "структуры" файла (таблицы) надо было корректировать тексты ВСЕХ программ, использующих его.
В РБД-модели самому файлу предшествует "заголовок" с описанием местоположения и типа полей и программы-клиенты (такого слова в той книжке еще не было) вовсе не обязаны были знать, ГДЕ ИМЕННО в записи находится определенное поле - они обращались к нему ПО ИМЕНИ. "Прослойка" (позже "движок", еще позже - "SQL-сервер") сама по заголовку находила смещение и длину поля и "поставляла" "клиенту" то, что надо.
И уже много позже появились те "отношения", о которых здесь речь: межтабличные, поддержки целостности, иерархические и т.д.
← →
Sergey13 © (2005-11-23 15:48) [48]Удалено модератором
← →
dioman © (2005-11-23 15:51) [49]
> msguns © (23.11.05 15:48) [47]
ну и к чему пришли??? ответ на главный вопрос
> Подскажите, является ли БД реляционной, если некоторые таблицы
> не взаимосвязанны (не содержат внешних ключей)? Если можно,
> то укажите ссылки на литературу.
ДА
← →
Anatoly Podgoretsky © (2005-11-23 15:52) [50]msguns © (23.11.05 15:48) [47]
При малейшем изменении "структуры" файла (таблицы) надо было корректировать тексты ВСЕХ программ, использующих его.
Этим страдают и современные программы.
← →
msguns © (2005-11-23 15:57) [51]В том же ADABAS (русская версия называлась СПЕКТР) для доступа к БД использовалась серия макрокоманд, которые непосредственно обращались к "ядру" СУБД, собственно и реализующему физический доступ к данным. Можно, не сильно поперечив истине, назвать эти макросы "методом доступа", а само ядро - "сервером". По крайней мере назначение этих сущностей было таково.
В "клиентских" программах (обычно на ассемблере для еэсок) осуществлялся вызов нужных функций СУБД посредством макрокоманд и полученная запись отправлялась функциональной программе (обычно на языке высокого уровня: Кобол, PL/I и т.д.). В обратном порядке передавались изменения. Языка запросов как такового не помню, зато были макрокоманды, выполняющие похожие действия (поиск, сортировка, групповая замена и т.д.)
← →
dioman © (2005-11-23 15:59) [52]
> msguns © (23.11.05 15:48) [47]
а чем ini файл не РБД???
есть имя объекта есть свойство (вот тебе 2 поля-отношения)... а все объекты (строки) обладают атомарностью.
← →
__гфф (2005-11-23 15:59) [53]>> Строго научно в РБД любое поле любой таблицы является отношением (relation).
msguns, я всегда считал, что не поле (столбец), а таблица является отношением
и еще я не очень понял, про отличие экселя
← →
msguns © (2005-11-23 16:06) [54]>Anatoly Podgoretsky © (23.11.05 15:52) [50]
>Этим страдают и современные программы.
Не совсем так. "Страдают" программы, написанные бестолково либо в случае действительно "разрушительных" изменений в топологии БД.
Во избежание этого и придумали люди "SQL-server" вместе со всеми его хранимками, триггерами, процедурами, функциями и т.д.
При грамотно спроектированной модели БД и "правильном" пользовательском интерфейсе "клиент" обращается не к таблицам БД, а к элементам логики сервера, описанным во всей этой фигне (ХП, триггера и т.д.). Практически любое изменение в таблицах БД, корректно отображенное в его логике, для "клиента" пройдет вообще незамеченным. Т.е. мы получаем модель, где в идеале хранение данных совершенно отделено от их "восприятия" (отображения). Что, собственно, и ставилось целью "изобретателями" РДБ ;)
← →
Val © (2005-11-23 16:13) [55]Удалено модератором
← →
msguns © (2005-11-23 16:16) [56]>__гфф (23.11.05 15:59) [53]
> я всегда считал, что не поле (столбец), а таблица является отношением
Ну, люди очень много веков считали Землю плоской. И не были от этого несчастливы ;) Таблица - это тоже отношение.
Представь себе модель "Подразделение", хранящееся в таблице РБД. Так вот, каждый работник, описанный отношениями "Фаимлия", "Имя", "Отчество" и т.д. представляет в этой таблице 1 запись и является таким образом отношением "работник". Вся же таблица целиком является отношением "Подразделение".
Т.е. изначально все сущности РБД - это нативные объекты или их характеристики (и то и другое - отношения), выраженные языком цифр и хранящиеся в строго определенном правилами данной РБД виде.
>и еще я не очень понял, про отличие экселя
Попробуй каким-то образом выбрать все строки таблицы, у которых в ячейках Axx значение не "пусто". Может, тогда будет понятнее ;))
← →
__гфф (2005-11-23 16:16) [57]Удалено модератором
Примечание: Парень, наконец ты достиг своего, нападки на модератора прощения не имеют
← →
Val © (2005-11-23 16:17) [58]кстати, ответ на вопрос автора в любом случае "да", поскольку совсем не обязательно _все_ таблицы в базе должны быть между собой связаны :)
← →
Anatoly Podgoretsky © (2005-11-23 16:56) [59]Вроде как пришли к согласию, остался только скользкий вопрос, что считать отношением. Но это еще на несколько дней споров.
← →
msguns © (2005-11-23 17:04) [60]>dioman © (23.11.05 15:59) [52]
>а чем ini файл не РБД???
Во-первых, у ini-файла нет четкой структуры, т.е. жестких правил представления, хранения и извлечения информации из последовательности записанных на магнитном носителе данных. Ini-файл "разберет" только та программа, которая его писала либо другие, которые будут абсолютно точно осведомлены об этом. Этот файл, в отличие от реляционных таблиц, может быть читаем только последовательно, строчка за строчкой.
Во-вторых, к этим данным нельзя обратиться никак иначе, чем только как к строчкам. Нет и не может быть "внешнего" аппартата, универсально осуществляющего доступ к ini-файлам как формату БД
В-третьих, ini-файл не содержит никаких средств упаковки и защиты. Его можно свободно читать и смыслово редактировать из любого софта, работающего с текстовиками.
В-четвертых, в самом ini-файле нет никаких "следов" отношений, "внутренне" определяющих связь между "метаданными" (заголовками) и собственно информацией.
Достаточно ?
← →
Вольный Стрелок © (2005-11-23 17:17) [61]невольно вспоминется Свифт с его остроконечниками и тупоконечниками :)
← →
dioman © (2005-11-23 17:23) [62]
> msguns © (23.11.05 17:04) [60]
какие форматы???? какой доступ??? какая упаковка и защита???
опять 25!!!
это уже технологии, фичи....
мы говорим о реляционной структуре данных! Является ли она таковой!!!
В тетрадке я нарисую таблички!!! и скажу что это РБД.. Вы мне начнете доказывать что это не так потому что она не упаковывается ?? и к ней нельзя обратиться запросом?
Ексель тоже самое!
Другой вопрос о СУБД!!! вот современные СУБД работающие с реляционными данными, предоставляют возможности таковые.
ини файл это представление данных в виде объект-свойство... я говорил о них как это реляционных данных !!! конечно это не СУБД... (в которой можно делать все что ты описал)
А когда появились определения реляционные бд врядли существовали средства упаковки и защиты, просто были описаны их необходимые условия (кторые Вы кстати сами и описывали)
Если Вы хотели приветси пример нереляционных данных, то можно сказать о дереве (иерархические данные), или сети.. короче Граф. Вот Граф - это хороший пример
← →
msguns © (2005-11-23 17:36) [63]>dioman © (23.11.05 17:23) [62]
Зачем кричать-то ?
Я чуть ли не в каждом посте упоминал о некоем "посреднике" между самими данными и программой, их пользующей. Естественно, не бывает яйца без курицы. Правильнее говорить не "РБД", "РСУБД".
Еще раз повторяю - Эксель - такой же РСУБД, как и блокнот, но с существенно бОльшими возможностями. Тогда уж и Ворд - это РСУБД, и Аутлук, да и вообще весь офис ;)
Если стоишь на своем - боже мой, да на здоровьичко !
;)
← →
dioman © (2005-11-23 17:42) [64]
> msguns © (23.11.05 17:36) [63]
> Правильнее говорить не "РБД", "РСУБД".
РБД и РСУБД - это совершенно разные вещи... и вопрос был именно по РБД.
вот тут уж точно....
как сказал __гфф - РТФМ.
← →
msguns © (2005-11-23 17:49) [65]>dioman © (23.11.05 17:42) [64]
>РБД и РСУБД - это совершенно разные вещи... и вопрос был именно по РБД.
Неужели ?
Ну тогда ищи другого собеседника ;)
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Память: 0.64 MB
Время: 0.042 c