|
|
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
Рассмотрим понятие реляционной связи в реляционной модели и понятие указателя в сетевой модели данных. Реляционная связь образуется по равенству значений аттрибутов и является симметричной. Указатель в отличие от отношения в реляционных базах представляет собой однонаправленную связь. Если объект 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.11.2006, 19:57 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
Кто здесь? Ктулху? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 20:39 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
Фхтагн !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 20:53 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
shuklin Связь между сущностями не зависит от СУБД, это элемент концептуальной модели. Любая связь имеет вид 1:m (1:1 - частный случай) Связь n:m - это не связь, а самостоятельная сущность, и распадается на две связи 1:n и 1:m. В ССУБД связь реализуется по внутренним номерам записей. В РСУБД связь реализуется по значениям полей записей. Реализации эквивалентны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2006, 10:39 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
мод Связь между сущностями не зависит от СУБД, это элемент концептуальной модели. С этим согласен. модРеализации эквивалентны. Это если концептуальные модели одинаковые, а если разные? Реляционные связи образуются по значению и как следствие они симметричны. А вот указатели вещь не симметричная. Реляционная связь многие ко многим действительно расспадается на две один ко многим. Однако каждая один ко многим в сетевой модели распадается еще на две. На одну, один ко многим и на одну многие к одному. Причем многие к одному это просто много связей одни к одному в трактовке сетевой модели. А в итоге это все граф с однонаправленными связями. Физические реализации у них тоже не эквивалентны. В РБД это равенство значений, хранимых в ячейках памяти, в СБД это равенство значения хранимого в ячейке и адреса другой ячейки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2006, 13:08 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
shuklinРеляционные связи образуются по значению и как следствие они симметричны. А вот указатели вещь не симметричная. Это только так кажется. Считайте, что запись всегда автоматически содержит свой адрес как одно из своих полей и получите то же самое. Между сетевой и реляционной моделями разницы нет - они эквивалентно преобразуются друг в друга - проверено на практике (а не на бумажках). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2006, 15:21 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
мод shuklinРеляционные связи образуются по значению и как следствие они симметричны. А вот указатели вещь не симметричная. Это только так кажется. Считайте, что запись всегда автоматически содержит свой адрес как одно из своих полей и получите то же самое. Между сетевой и реляционной моделями разницы нет - они эквивалентно преобразуются друг в друга - проверено на практике (а не на бумажках). Это всего лишь одна точка зрения, и я ее считаю неверной по одной большой причине: она не конструктивна. - В реализации СМД не нужно проводить поиск объекта по адресу==аттрибуту. В реализации РМД нужно. - В СМД нельзя считать связи двунаправленными, т.к. реализация двунаправленных связей по эффективности будет равна реализации двунаправленных связей в РМД. Однонаправленные же связи не требуют операций поиска что делает их реализацию эффективной. Точка зрения на связь как на однонаправленную приводит к возможности установить связь от объекта А к обеъкту Б без того чтобы объект Б смог установить связь к объекту А. В РМД такое свойство придется вводить искусственно. С другой стороны чтобы в СМД реализовать двунаправленную связь потребуется искусственно вводить в объект Б указатель на объект А. Мало того СМД не работает с отношениями==таблицами. В СМД скорее отношение==объект==строка таблицы. Если вы хотели сказать, что СМД и РМД в абстрактном смысле как модели представления данных/знаний обладают эквивалентной представительной полнотой - я с этим конешно же соглашусь. Так же любые две машины Тьюринга == машины Поста обладают одинаковой вычислительной полнотой. Но эффективность реализации будет разная. И соответсвенно СМД<>РМД а всего лишь эквивалентно в абстрактном смысле. Вывод этот обоюдоострый. Если эти две модели эквивалентны, а СМД удобнее в использовании, то РМД пора на пенсию ))) Что же касается удобства, я тут уже показывал способ моделирования РМД на основе СМД без наличия метаперехода по Турчину. Обратный же способ моделирования СМД на основе РМД без такого метаперехода мне лично не известен. Если он существует - от меня Вам будет большое спасибо за ссылку. Да, надо отдельно уточнить, что СМД не отвергает использования реляционных связей по значению, просто дополнительно к ним вводит однонаправленные связи. Именно благодаря наличию реляционных связей по значению между указателями (однонаправленными связями по идентичности) мне удалось в своей СУБД реализовать синонимию/омонимию объектных идентификаторов. Есть еще "культурный" аспект этого же вопроса, но он выходит за рамки данного обсуждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2006, 18:02 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
Добавьте PK числового типа с автоинкрементом ко всем таблицам. И тогда однонаправленная связь и будет реализована, как ссылка на PK. Скорость доступа при наличии индекса будет максимальной в прямом направлении. Остается вопрос с типизацией указателей: в РСУБД для указания сущности в произвольной таблице придется еще подкрутить, но это тоже делается. Сетевые БД - это когда индексы будут протянуты не только для выборки множества экземпляров сущности, а когда будут реализованы индексы для поддержки рекурсивных выборок/сетевых алгоритмов. Например, для определения связности двух элементов по связям определнного типа или для выделения полного множества элементов, связанных с данным и т.д. Когда такие запросы будут реализовываться на языке этой СУБД, а внутренние механизмы будут поддерживать интенсивную работу таких запросов, можно будет говорить о сетевых БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2006, 22:19 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
shuklinЭто всего лишь одна точка зрения, и я ее считаю неверной по одной большой причине: она не конструктивна. Не понял, какая точка ? Я кажется просто предлагал мысленный эксперимент. shuklinНо эффективность реализации будет разная. Эффективность реализации меня не интересует (пока). shuklinОбратный же способ моделирования СМД на основе РМД без такого метаперехода мне лично не известен. Когда меня не устраивала СБД, я моделировал РБД на СБД. Когда меня не устраивает РБД, я моделирую СБД на РБД. Ссылки к сожалению дать не могу, могу только дать совет попробовать, это не сложно. Про связи не понял - имхо любая связь двухсторонняя. Если есть связь объектов А и В как 1:М, то несколько объектов В ссылаются на один объект А, с другой стороны объект А является мишенью ссылок от объектов В - в чем проблема ? (заметьте - способ организации ссылок значения не имеет). Само наличие связи д.б. описано в модели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 09:55 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
?Добавьте PK числового типа с автоинкрементом ко всем таблицам. Это очевидно, но надо чтобы это делала СУБД сама ? можно будет говорить о сетевых БД. Любая концептуальная модель данных - это сеть. (ER диаграмма). Сетевые СУБД существую очень давно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 10:00 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
мод ?Добавьте PK числового типа с автоинкрементом ко всем таблицам. Это очевидно, но надо чтобы это делала СУБД сама Нет проблем, возьмите базу(например Informix ), которая позволяет оперировать rowid как столбцом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 10:36 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
!Нет проблем, возьмите базу(например Informix ), которая позволяет оперировать rowid как столбцом. Че-то не помню я такого в информиксе. Но что значит оперировать - ссылочная целостность поддерживается ? Неизменность гарантируется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 11:34 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
мод !Нет проблем, возьмите базу(например Informix ), которая позволяет оперировать rowid как столбцом. Че-то не помню я такого в информиксе. Но что значит оперировать - ссылочная целостность поддерживается ? Неизменность гарантируется ? Гугль помнит все :) например : Вот Ограничения: 1. Таблица не должна быть фрагментирована. 2. Внешние ключи поддерживаются, но очень сильно не рекомендуются. По понятным для РСУБД причинам. Если Вы точно знаете что хотите получить, можно создать свой датаблейд, который решить вопросы обработки хранящихся в informix серевых иерархий, и закроет от конечного пользователя эти ограничения. Зачем строить велосипед с нуля, если материалы и инструменты уже есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 12:12 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
!Зачем строить велосипед с нуля, если материалы и инструменты уже есть. Не, не пойдет (кто-бы сомневался): 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.11.2006, 12:39 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
мод !Зачем строить велосипед с нуля, если материалы и инструменты уже есть. Не, не пойдет (кто-бы сомневался): 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.11.2006, 12:48 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
!Что значит никогда. Чем тогда указатель в сетевой БД отличается от ссылки на РК? Рассказываю: после создания записи она получает rowid, его можно читать, но изменить нельзя. Если на него есть ссылки, то запись удалить нельзя. Индекс по rowid не строится и ключом rowid не является. В РСУБД и РК и ссылки на РК - это столбцы таблиц, которые можно изменять (если снять constraint). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:18 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
To mod Зачем rowid в РСУБД нужен? Никак не могу понять его смысл:( Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:30 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
мод Рассказываю: после создания записи она получает rowid, его можно читать, но изменить нельзя. Правильно, нельзя, потому как он однозначно указывает на ссылаемый обект. РК тоже менять нельзя по стандарту. мод Если на него есть ссылки, то запись удалить нельзя. Что даже каскадно вместе со всеми ссылающимися на него обьектами? Странно. Мне интрересен алгоритм проверки логической целоснтности при вставке и удалении, без наличия индексов, с разумной производительностью. мод Индекс по rowid не строится и ключом rowid не является. В РСУБД и РК и ссылки на РК - это столбцы таблиц, которые можно изменять (если снять constraint). Понятие "снять constraint" равносильно удалить указатель из иерархии схемы. Это хоть можно? Судя по всему тоже нельзя. Кстате при экспорте/импорте данных с одного сервера на другой они (rowid) сохраняются? Я не вижу преймуществ указателей по сравнению с ключами РСУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:56 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
RENaissance To mod Зачем rowid в РСУБД нужен? Никак не могу понять его смысл:( Posted via ActualForum NNTP Server 1.3 rowid это внутренний указатель в РСУБД, который однозначно определяет меснонахождение записи в файлах данных. Используется для индексного поиска записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:02 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
! rowid это внутренний указатель в РСУБД, который однозначно определяет меснонахождение записи в файлах данных. Используется для индексного поиска записи. Для этого же есть первичный ключ! З.Ы Интересуюсь с практической точки зрения, т.к. работаю с MSSQL, где понятие rowid отсутствует. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:09 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
RENaissance ! rowid это внутренний указатель в РСУБД, который однозначно определяет меснонахождение записи в файлах данных. Используется для индексного поиска записи. Для этого же есть первичный ключ! З.Ы Интересуюсь с практической точки зрения, т.к. работаю с MSSQL, где понятие rowid отсутствует. Posted via ActualForum NNTP Server 1.3 А как вы думаете, какую еще информацию хранит в себе первичный ключ кроме самого значения. Он хранит указатель(rowid) на запись со значением этого ключа в файле данных. Внешний ключ хранит значение ключа и список указателей (rowid) на строки с этим значением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:18 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
! А как вы думаете, какую еще информацию хранит в себе первичный ключ кроме самого значения. Он хранит указатель(rowid) на запись со значением этого ключа в файле данных. Внешний ключ хранит значение ключа и список указателей (rowid) на строки с этим значением. Это мне понятно. Мне не понятно, в чем практическая ценность rowid для разработчика? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:23 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
RENaissance ! А как вы думаете, какую еще информацию хранит в себе первичный ключ кроме самого значения. Он хранит указатель(rowid) на запись со значением этого ключа в файле данных. Внешний ключ хранит значение ключа и список указателей (rowid) на строки с этим значением. Это мне понятно. Мне не понятно, в чем практическая ценность rowid для разработчика? Posted via ActualForum NNTP Server 1.3 subj О типах связей в сетевой модели данных. Это одни из вариантов для случая, когда разработчику нужно скрестить ужа с ежом, что бы не разводить зоопарк из различных баз данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:38 |
|
||
|
О типах связей в сетевой модели данных.
|
|||
|---|---|---|---|
|
#18+
RENaissanceЭто мне понятно. Мне не понятно, в чем практическая ценность rowid для разработчика? А какая тогда практическая ценность от identity - его значение тоже никакой смысловой нагрузки не несёт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:48 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=34137148&tid=1553406]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 359ms |

| 0 / 0 |
