Нормализация БД и подзапросы - PullRequest
0 голосов
/ 17 июля 2011

Я прохожу курс по базам данных, и у меня есть пара вопросов о вычислительных проблемах.Мы очень ценим любые идеи.

Во-первых, я слышал, что «нет никакого алгоритма» для преобразования отношений в BCNF, который является как без потерь, так и с сохранением зависимостей.Причина этого заключается в том, что для некоторых отношений в BCNF не существует отношения с требуемыми свойствами.Я нахожу это вводящим в заблуждение, в том смысле, что вы могли бы сказать, что нет алгоритма для нахождения двух реальных решений квадратного уравнения с использованием одной и той же логики.Конечно, вы не можете ... Но для проблемы нормализации, я думаю, должно быть возможно определить, есть ли преобразование в BCNF с обоими свойствами (проблема решения) и, если проблема решения выдает "да", алгоритм длявычислить эквивалентное представление BCNF.Правильно ли мое мышление или что-то из того, что я сказал, неверно?

Мой второй вопрос касается подзапросов.Можно ли переписать любой запрос в SQL, включающий подзапросы, без подзапросов?Я знаю, что это не очень хорошо сформулировано ... Я предполагаю, что давайте придерживаться базового SQL (что разделяют большинство / всех систем) и ограничим подзапросы для выбора операторов, подчиненных высокоуровневым (с учетом операций над множествами верхнего уровня),

1 Ответ

0 голосов
/ 17 июля 2011

1 - Насколько я знаю, нет единого алгоритма, который бы определял, можно ли преобразовать отношение в BCNF при сохранении его свойств.Тем не менее, вы можете комбинировать уже существующие и достигать желаемого.

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

Я знаю, что это не тот ответ, который вам нужен, но его можно использовать в качестве решения.

2 - Если вы имеете в виду вложенные запросы, то некоторые запросы, включающие подзапросы, могут быть написаны без использования подзапросов.

...