powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ссылочная целостность
10 сообщений из 10, страница 1 из 1
Ссылочная целостность
    #34089158
latnat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите разобраться в интересном вопросе, связанным с проектированием БД.

Есть отношение (реляционная табличка) R:
Номер_типа_платежа, Счет_получателя, Номер_платежа, Cумма, Номер_доп_реквизита, Имя_доп_реквизита, Значение_доп_реквизита.

Вижу следующие зависимости:

Номер_типа_платежа --> Счет_получателя;
Номер_платежа --> Сумма;
Номер_платежа --> Номер_типа_платежа;
Номер_платежа, Номер_доп_реквизита --> Значение_доп_реквизита.
Номер_доп_реквизита --> Номер_типа_платежа, Имя_доп_реквизита.

Возможно, что какие-то зависимости между атрибутами отношения R мною упущены.

В голову приходит декомпозиция R на четыре таблички:

Тип платежа (Номер_типа_платежа,Счет_получателя);
Доп_реквизиты(Номер_доп_реквизита,Номер_типа_платежа, Имя_доп_реквизита);
Платежи(Номер_платежа, Cумма, Номер_типа_платежа);
Значения реквизитов (Номер_платежа, Номер_доп_реквизита,Значение_доп_реквизита);

Но в при такой декомпозиции есть возможность добавить в таблицу "Значения реквизитов" запись, у которой "номер_доп_реквизита" не входит в набор, определяемый атрибутом "Номер_типа_платежа" в таблице "Доп_реквизиты".

Пример. Есть два типа платежа: SIMPLE с номером 1 и COMPLEX с номером 2.
В таблице "Тип платежа" имеем две записи: (1,0000000) и (2,9999999).

Для типа SIMLPE, необходимо наличие дополнительного реквизита SA с номером 11. Для типа COMPLEX необходимы реквизиты CA с номером 21 и CB с номером 22. Т.е. в таблице "Доп_реквизиты" имеются записи: (11,1,SA); (21,2,CA); (22,2,CB).

Если принят платеж COMPLEX с номером 0, на сумму 10.00 у.е. со значением реквизита CA равным "Значение CA" и значением CB равным "Значение CB", то в таблице "Платежи" появится запись (0, 10.00, 1). Помимо этого в таблице "Значения реквизитов" появиться записи (0,21, "Значение CA") и (0,22, "Значение CB"). Однако, теоретически, при приведенной выше декомпозиции,
ничто не мешает вставить в таблицу "Значения реквизитов" запись (0,11, "Значение SA").

Хочется, чтобы такая возможность была исключена на уровне ссылочной целостности. Но для этого, видимо, необходима иная декомпозиция исходного отношения. Каким образом это можно сделать? Возможно кто-то укажет ссылки на ресурсы, в которых можно найти ответ на этот вопрос.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #34089916
latnat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видимо, шибко тяжелая вещь эта декомпозиция? Либо вопрос глупый? Не пойму.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #34091607
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Много букв, посему, IMHO, никто не хочет задумываться :)
А если серьезно, то для поиска зависимостей необходимо знать их наличие на предметном уровне, на уровне перечисления полей одной таблицы они совсем не очевидны.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #34092009
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой ключ/ключи у отношения R?
Какой из них вы выбрали в качестве первичного?
Имеется ли неполная функциональная завичимость неключевых атрибутов от первичного ключа?
Есть ли транзитивные зависимости неключевых атрибутов?

Ответив на эти вопросы, вы без труда выполните нормализацию вашей модели.
Как было сказано: ответы ищите в предметной области,
то есть в той реальной ситуации, которую вы моделируете схемой данных.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #34097755
latnat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChAМного букв, посему, IMHO, никто не хочет задумываться :)

А задумываться хотя бы изредко стоит.

ChAА если серьезно, то для поиска зависимостей необходимо знать их наличие на предметном уровне, на уровне перечисления полей одной таблицы они совсем не очевидны.

Предметную область знать может и надо, но в данном случае, как мне кажется, это не обязательно.

Примером я хотел донести следующую мыслю (видимо не очень получилось): есть Предмет(Платежи), есть значения некоторых свойств предмета (Значения реквизитов), и есть две таблички, одна из которых задает типы предметов (Типы платежей), а другая сопоставляет этим типам множество допустимых свойств (Доп_реквизиты). Спрашивается как, используя ссылочные ограничения, не допустить наличия в у предмета, имеющего некоторый тип, таких свойств, которые ему не сопоставлены таблицей "Доп_реквизиты"?
...
Рейтинг: 0 / 0
Ссылочная целостность
    #34098950
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему именно ссылочной ?
Почему не декларативной в принципе, и где граница допустимого. Например, в ОРАКЛ можно сконструировать материализованное представление с ограничениями - это допустимо?
...
Рейтинг: 0 / 0
Ссылочная целостность
    #34099435
latnat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ModelRА почему именно ссылочной ?
Почему не декларативной в принципе, и где граница допустимого. Например, в ОРАКЛ можно сконструировать материализованное представление с ограничениями - это допустимо?

Честно говоря с таким типом целостности не знаком. Не свойственна ли она лишь Oracle?

В теории реляционных БД ничего об этом не встречал, хотя усилинно и не рыскал. Буду благодарен, если укажите какие-либо полезные ссылочки для ознакомления.

Может после и отвечу на вопросы
ModelR
Почему не декларативной в принципе, и где граница допустимого.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #34102227
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напомню,
декларативное ограничение целостности (в отличие от процедурного) - родовой термин. Теоретически это любой предикат, истинность которого СУБД должна поддерживать. Практически DDL СУБД включают уникальность, ссылочные ограничения, ограничения внутри строки таблицы.
Так вопрос теоретический или практический?
...
Рейтинг: 0 / 0
Ссылочная целостность
    #34102742
latnat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ModelRНапомню,
декларативное ограничение целостности (в отличие от процедурного) - родовой термин. Теоретически это любой предикат, истинность которого СУБД должна поддерживать. Практически DDL СУБД включают уникальность, ссылочные ограничения, ограничения внутри строки таблицы.
Так вопрос теоретический или практический?

Немного врубился. Как я понял декларативным можно считать способ реализации целостности данных, зависящий от СУБД. Различные СУБД, поддерживают различный набор предикатов, в то время как ссылочная целостность поддерживается всеми реляционными СУБД, иначе это может и СУБД, но не реляционная. Главное отличие ссылочной целостности от более сложных типов целостности данных, как мне кажеться, состоит в том, что она фундаментальна, поскольку сильно используется в теории БД, при декомпозиции. По меньшей мере, ее особая роль очевидна.

В противном случае, можно было бы, всегда проектировать БД в виде одной таблички, наложив массу декларативных ограничений, например внутри строки таблицы.

По видимому, мой первоначальный вопрос можно рассматривать таким образом: можно ли те ограничения, что приведены в примере с платежами, реализовать как ограничения ссылочной целостности? Вопрос скорее теоретический, ведь можно не париться и реализовать все в триггерах, но это не интересно. То ли я чего-то упустил, какую-то сущность или зависимость. Сомнение вызывает и то, что в примере декомпозиции с платежами есть несколько различных путей от одной таблице к другой по зависимстям типа M:1. С одной стороны, это говорит о том, что какая-то из них лишняя, с другой стороны, я не могу выбрасить ни одной.

Вот такие пироги.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #34103275
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
latnatВидимо, шибко тяжелая вещь эта декомпозиция? Либо вопрос глупый? Не пойму.Почитайте, хотя бы выборочно, книгу К. Дж. Дейт. Введение в системы баз данных, 8-е издание .
После внимательного прочтения основ всё встанет на место.
Будет хотеться спать, но все равно читайте!!! :-)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ссылочная целостность
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]