Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 .. 31   вперед  Ctrl
 О типах связей в сетевой модели данных.  [new]
shuklin
Member

Откуда: Харьков
Сообщений: 799
Рассмотрим понятие реляционной связи в реляционной модели и понятие указателя в сетевой модели данных. Реляционная связь образуется по равенству значений аттрибутов и является симметричной. Указатель в отличие от отношения в реляционных базах представляет собой однонаправленную связь.

Если объект A имеет указатель на объект B это означает что объект A имеет доступ к объекту B но не наоборот. Такую связь можно назвать 1 к 1. Тоесть один объект связан с одним объектом. Точного аналога данной связи в реляционной модели нет. В РМД этой связи соответсвуют половинки связей 1 к 1 и 1 ко многим ведущие к единице.

Если объект A имеет указатель на объект B и объект B имеет симетричный указатель на объект A то в сетевой модели данных эта ситуация описывается двумя связями 1 к 1 от A к B и 1 к 1 от B к A. Этот случай соответвует связи 1 к 1 в реляционной модели. Однако соответсвие не является полностью эквивалентным.

Если объект A имеет коллекцию указателей на объекты B то объект A имеет доступ ко всем объектам B однако объекты B не имеют доступа к объекту A. Такую связь можно назвать 1 ко многим. Эта связь соответствует половинке связи 1 ко многим в РМД ведущей от единице к коллекции.

Если объект A имеет коллекцию указателей на объекты B и каждый объект B имеет один указатель на объект A то в сетевой модели эта ситуация описывается двумя связями 1 ко многим от A к B и 1 к 1 от B к A. Этот случай соответствует связи 1 ко многим в реляционной модели. Однако соответсвие не является полностью эквивалентным.

Если объекты коллекции A имеют коллекцию указателей на объекты коллекции B и объекты коллекции B имеют коллекцию указателей на объекты коллекции A то в сетевой модели эта ситуация описывается двумя связями 1 ко многим от A к B и 1 ко многим от B к A. Этот случай соответствует связи многие ко многим в реляционной модели. Однако соответсвие не является полностью эквивалентным.
15 ноя 06, 19:57    [3406209]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Кто здесь? Ктулху?

Posted via ActualForum NNTP Server 1.3

15 ноя 06, 20:39    [3406299]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
Andreww
Member [заблокирован]

Откуда:
Сообщений: 1752
Фхтагн !!!
15 ноя 06, 20:53    [3406338]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
мод
Guest
shuklin

Связь между сущностями не зависит от СУБД, это элемент концептуальной модели.
Любая связь имеет вид 1:m (1:1 - частный случай)
Связь n:m - это не связь, а самостоятельная сущность, и распадается на две связи 1:n и 1:m.
В ССУБД связь реализуется по внутренним номерам записей.
В РСУБД связь реализуется по значениям полей записей.
Реализации эквивалентны.
16 ноя 06, 10:39    [3407648]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
shuklin
Member

Откуда: Харьков
Сообщений: 799
мод

Связь между сущностями не зависит от СУБД, это элемент концептуальной модели.

С этим согласен.

мод
Реализации эквивалентны.

Это если концептуальные модели одинаковые, а если разные?
Реляционные связи образуются по значению и как следствие они симметричны.
А вот указатели вещь не симметричная. Реляционная связь многие ко многим действительно расспадается на две один ко многим. Однако каждая один ко многим в сетевой модели распадается еще на две. На одну, один ко многим и на одну многие к одному. Причем многие к одному это просто много связей одни к одному в трактовке сетевой модели. А в итоге это все граф с однонаправленными связями.

Физические реализации у них тоже не эквивалентны. В РБД это равенство значений, хранимых в ячейках памяти, в СБД это равенство значения хранимого в ячейке и адреса другой ячейки.
16 ноя 06, 13:08    [3408809]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
мод
Guest
shuklin
Реляционные связи образуются по значению и как следствие они симметричны.
А вот указатели вещь не симметричная.

Это только так кажется. Считайте, что запись всегда автоматически содержит свой адрес как одно из своих полей и получите то же самое.
Между сетевой и реляционной моделями разницы нет - они эквивалентно преобразуются друг в друга - проверено на практике (а не на бумажках).
16 ноя 06, 15:21    [3409982]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
shuklin
Member

Откуда: Харьков
Сообщений: 799
мод
shuklin
Реляционные связи образуются по значению и как следствие они симметричны.
А вот указатели вещь не симметричная.

Это только так кажется. Считайте, что запись всегда автоматически содержит свой адрес как одно из своих полей и получите то же самое.
Между сетевой и реляционной моделями разницы нет - они эквивалентно преобразуются друг в друга - проверено на практике (а не на бумажках).


Это всего лишь одна точка зрения, и я ее считаю неверной по одной большой причине: она не конструктивна.

- В реализации СМД не нужно проводить поиск объекта по адресу==аттрибуту. В реализации РМД нужно.
- В СМД нельзя считать связи двунаправленными, т.к. реализация двунаправленных связей по эффективности будет равна реализации двунаправленных связей в РМД. Однонаправленные же связи не требуют операций поиска что делает их реализацию эффективной.

Точка зрения на связь как на однонаправленную приводит к возможности установить связь от объекта А к обеъкту Б без того чтобы объект Б смог установить связь к объекту А. В РМД такое свойство придется вводить искусственно. С другой стороны чтобы в СМД реализовать двунаправленную связь потребуется искусственно вводить в объект Б указатель на объект А.

Мало того СМД не работает с отношениями==таблицами. В СМД скорее отношение==объект==строка таблицы.

Если вы хотели сказать, что СМД и РМД в абстрактном смысле как модели представления данных/знаний обладают эквивалентной представительной полнотой - я с этим конешно же соглашусь. Так же любые две машины Тьюринга == машины Поста обладают одинаковой вычислительной полнотой. Но эффективность реализации будет разная. И соответсвенно СМД<>РМД а всего лишь эквивалентно в абстрактном смысле.

Вывод этот обоюдоострый. Если эти две модели эквивалентны, а СМД удобнее в использовании, то РМД пора на пенсию ))) Что же касается удобства, я тут уже показывал способ моделирования РМД на основе СМД без наличия метаперехода по Турчину. Обратный же способ моделирования СМД на основе РМД без такого метаперехода мне лично не известен. Если он существует - от меня Вам будет большое спасибо за ссылку.

Да, надо отдельно уточнить, что СМД не отвергает использования реляционных связей по значению, просто дополнительно к ним вводит однонаправленные связи.

Именно благодаря наличию реляционных связей по значению между указателями (однонаправленными связями по идентичности) мне удалось в своей СУБД реализовать синонимию/омонимию объектных идентификаторов.

Есть еще "культурный" аспект этого же вопроса, но он выходит за рамки данного обсуждения.
16 ноя 06, 18:02    [3411344]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
?
Guest
Добавьте PK числового типа с автоинкрементом ко всем таблицам. И тогда однонаправленная связь и будет реализована, как ссылка на PK. Скорость доступа при наличии индекса будет максимальной в прямом направлении. Остается вопрос с типизацией указателей: в РСУБД для указания сущности в произвольной таблице придется еще подкрутить, но это тоже делается.

Сетевые БД - это когда индексы будут протянуты не только для выборки множества экземпляров сущности, а когда будут реализованы индексы для поддержки рекурсивных выборок/сетевых алгоритмов. Например, для определения связности двух элементов по связям определнного типа или для выделения полного множества элементов, связанных с данным и т.д. Когда такие запросы будут реализовываться на языке этой СУБД, а внутренние механизмы будут поддерживать интенсивную работу таких запросов, можно будет говорить о сетевых БД.
16 ноя 06, 22:19    [3412218]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
мод
Guest
shuklin
Это всего лишь одна точка зрения, и я ее считаю неверной по одной большой причине: она не конструктивна.

Не понял, какая точка ? Я кажется просто предлагал мысленный эксперимент.
shuklin
Но эффективность реализации будет разная.

Эффективность реализации меня не интересует (пока).
shuklin
Обратный же способ моделирования СМД на основе РМД без такого метаперехода мне лично не известен.

Когда меня не устраивала СБД, я моделировал РБД на СБД. Когда меня не устраивает РБД, я моделирую СБД на РБД. Ссылки к сожалению дать не могу, могу только дать совет попробовать, это не сложно.
Про связи не понял - имхо любая связь двухсторонняя. Если есть связь объектов А и В как 1:М, то несколько объектов В ссылаются на один объект А, с другой стороны объект А является мишенью ссылок от объектов В - в чем проблема ? (заметьте - способ организации ссылок значения не имеет). Само наличие связи д.б. описано в модели.
17 ноя 06, 09:55    [3413091]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
мод
Guest
?
Добавьте PK числового типа с автоинкрементом ко всем таблицам.

Это очевидно, но надо чтобы это делала СУБД сама
?
можно будет говорить о сетевых БД.

Любая концептуальная модель данных - это сеть. (ER диаграмма). Сетевые СУБД существую очень давно.
17 ноя 06, 10:00    [3413123]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
!
Guest
мод
?
Добавьте PK числового типа с автоинкрементом ко всем таблицам.

Это очевидно, но надо чтобы это делала СУБД сама


Нет проблем, возьмите базу(например Informix ), которая позволяет оперировать rowid
как столбцом.
17 ноя 06, 10:36    [3413370]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
мод
Guest
!
Нет проблем, возьмите базу(например Informix ), которая позволяет оперировать rowid
как столбцом.

Че-то не помню я такого в информиксе. Но что значит оперировать - ссылочная целостность поддерживается ? Неизменность гарантируется ?
17 ноя 06, 11:34    [3413964]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
!
Guest
мод
!
Нет проблем, возьмите базу(например Informix ), которая позволяет оперировать rowid
как столбцом.

Че-то не помню я такого в информиксе. Но что значит оперировать - ссылочная целостность поддерживается ? Неизменность гарантируется ?



Гугль помнит все :)

например :
Вот

Ограничения:
1. Таблица не должна быть фрагментирована.
2. Внешние ключи поддерживаются, но очень сильно не рекомендуются.
По понятным для РСУБД причинам.


Если Вы точно знаете что хотите получить,
можно создать свой датаблейд, который решить вопросы обработки
хранящихся в informix серевых иерархий, и закроет от конечного пользователя
эти ограничения.

Зачем строить велосипед с нуля, если материалы и инструменты уже есть.
17 ноя 06, 12:12    [3414339]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
мод
Guest
!
Зачем строить велосипед с нуля, если материалы и инструменты уже есть.

Не, не пойдет (кто-бы сомневался):

Never store a rowid in a permanent table or attempt to use it as a foreign key. If a table is dropped and then reloaded from external data, all the rowids will be different.

В сетевых БД каждая запись автом. получает rowid и он никогда не изменяется.
17 ноя 06, 12:39    [3414582]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
!
Guest
мод
!
Зачем строить велосипед с нуля, если материалы и инструменты уже есть.

Не, не пойдет (кто-бы сомневался):

Never store a rowid in a permanent table or attempt to use it as a foreign key. If a table is dropped and then reloaded from external data, all the rowids will be different.

В сетевых БД каждая запись автом. получает rowid и он никогда не изменяется.



Что значит никогда.
Чем тогда указатель в сетевой БД отличается от ссылки на РК?
17 ноя 06, 12:48    [3414668]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
мод
Guest
!
Что значит никогда. Чем тогда указатель в сетевой БД отличается от ссылки на РК?

Рассказываю: после создания записи она получает rowid, его можно читать, но изменить нельзя. Если на него есть ссылки, то запись удалить нельзя. Индекс по rowid не строится и ключом rowid не является. В РСУБД и РК и ссылки на РК - это столбцы таблиц, которые можно изменять (если снять constraint).
17 ноя 06, 14:18    [3415477]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10895

To mod
Зачем rowid в РСУБД нужен? Никак не могу понять его смысл:(


Posted via ActualForum NNTP Server 1.3

17 ноя 06, 14:30    [3415601]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
!
Guest
мод

Рассказываю: после создания записи она получает rowid, его можно читать, но изменить нельзя.

Правильно, нельзя, потому как он однозначно указывает на ссылаемый обект.
РК тоже менять нельзя по стандарту.

мод

Если на него есть ссылки, то запись удалить нельзя.


Что даже каскадно вместе со всеми ссылающимися на него обьектами?
Странно.
Мне интрересен алгоритм проверки логической целоснтности при
вставке и удалении, без наличия индексов, с разумной производительностью.

мод

Индекс по rowid не строится и ключом rowid не является. В РСУБД и РК и ссылки на РК - это столбцы таблиц, которые можно изменять (если снять constraint).


Понятие "снять constraint" равносильно удалить указатель из иерархии схемы.
Это хоть можно? Судя по всему тоже нельзя.

Кстате при экспорте/импорте данных с одного сервера на другой они (rowid)
сохраняются?

Я не вижу преймуществ указателей по сравнению с ключами РСУБД.
17 ноя 06, 14:56    [3415854]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
!
Guest
RENaissance

To mod
Зачем rowid в РСУБД нужен? Никак не могу понять его смысл:(


Posted via ActualForum NNTP Server 1.3


rowid это внутренний указатель в РСУБД, который однозначно определяет
меснонахождение записи в файлах данных.
Используется для индексного поиска записи.
17 ноя 06, 15:02    [3415900]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10895

!

rowid это внутренний указатель в РСУБД, который однозначно определяет
меснонахождение записи в файлах данных.
Используется для индексного поиска записи.

Для этого же есть первичный ключ!

З.Ы Интересуюсь с практической точки зрения, т.к. работаю с MSSQL, где понятие rowid отсутствует.


Posted via ActualForum NNTP Server 1.3

17 ноя 06, 15:09    [3415961]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
!
Guest
RENaissance

!

rowid это внутренний указатель в РСУБД, который однозначно определяет
меснонахождение записи в файлах данных.
Используется для индексного поиска записи.

Для этого же есть первичный ключ!

З.Ы Интересуюсь с практической точки зрения, т.к. работаю с MSSQL, где понятие rowid отсутствует.


Posted via ActualForum NNTP Server 1.3


А как вы думаете, какую еще информацию хранит в себе первичный
ключ кроме самого значения.
Он хранит указатель(rowid) на запись со значением этого ключа
в файле данных.
Внешний ключ хранит значение ключа и список указателей (rowid)
на строки с этим значением.
17 ноя 06, 15:18    [3416058]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10895

!

А как вы думаете, какую еще информацию хранит в себе первичный
ключ кроме самого значения.
Он хранит указатель(rowid) на запись со значением этого ключа
в файле данных.
Внешний ключ хранит значение ключа и список указателей (rowid)
на строки с этим значением.

Это мне понятно. Мне не понятно, в чем практическая ценность rowid для разработчика?


Posted via ActualForum NNTP Server 1.3

17 ноя 06, 15:23    [3416111]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
!
Guest
RENaissance

!

А как вы думаете, какую еще информацию хранит в себе первичный
ключ кроме самого значения.
Он хранит указатель(rowid) на запись со значением этого ключа
в файле данных.
Внешний ключ хранит значение ключа и список указателей (rowid)
на строки с этим значением.

Это мне понятно. Мне не понятно, в чем практическая ценность rowid для разработчика?


Posted via ActualForum NNTP Server 1.3


subj О типах связей в сетевой модели данных.
Это одни из вариантов для случая,
когда разработчику нужно скрестить ужа с ежом, что бы не разводить зоопарк
из различных баз данных.
17 ноя 06, 15:38    [3416252]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
RENaissance
Это мне понятно. Мне не понятно, в чем практическая ценность rowid для разработчика?

А какая тогда практическая ценность от identity - его значение тоже никакой смысловой нагрузки не несёт
17 ноя 06, 15:48    [3416329]     Ответить | Цитировать Сообщить модератору
 Re: О типах связей в сетевой модели данных.  [new]
мод
Guest
!
Я не вижу преймуществ указателей по сравнению с ключами РСУБД.

А никаких преймуществ и нет, поэтому сетевые СУБД и не применяют больше. Другое дело, что rowid в РСУБД надо бы довести до ума.
17 ноя 06, 15:49    [3416339]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 .. 31   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить