ряд вопросов относительно вашего вопроса (даже если я боюсь, что я не отвечаю на все ваши вопросы),
"С одной стороны, в теории отношений естественные объединения - это единственные объединения, которыедолжно произойти (или, по крайней мере, крайне предпочтительны). "
Похоже, что вы интерпретируете теорию так, будто она запрещает" другие виды "объединений ... Это не совсем так.Реляционная теория не говорит: «у вас не может быть антисоединений», «вы никогда не должны использовать антисоединения», или что-то в этом роде.Что он говорит, так это то, что в реляционной алгебре можно идентифицировать набор примитивных операторов, в которых естественное соединение является единственным оператором, подобным соединению.Все остальные операторы, подобные соединению, всегда могут быть эквивалентно выражены через определенные примитивные операторы.Например, декартово произведение является частным случаем естественного объединения (где набор общих атрибутов пуст), и если вы хотите, чтобы декартово произведение двух таблиц, у которых do было общее имя атрибута,Вы можете решить эту проблему, используя RENAME.Например, Semijoin - это естественное соединение первой таблицы с некоторой проекцией на вторую.Например, Antijoin (SEMIMINUS или NOT MATCHING в книге Дейта) - это реляционная разница между первой таблицей и SEMIJOIN из двух.и т. д. и т. п.
"С другой стороны, в SQL не рекомендуется использовать NATURAL JOIN и вместо этого использовать альтернативные средства (например, внутреннее объединение с ограничением)."
Где рекомендуются такие вещи?В стандарте SQL?Я так не думаю.Важно различать язык SQL как таковой, который определяется стандартом ISO, и некоторую (/ любую) конкретную реализацию этого языка, созданную каким-то конкретным поставщиком.Если Microsoft советует своим клиентам не использовать NJ в SQL Server 200x, то этот совет имеет совершенно иной смысл, нежели совет кого-либо вообще не использовать NJ в SQL.
"Естественные объединения работают в настоящей СУБД.Однако SQL не может полностью воспроизвести реляционную модель, и ни одна из популярных СУБД SQL не является истинной СУБД. "
Несмотря на то, что сам по себе SQL не в состоянии точно соответствовать реляционной теории, на самом деле очень малоделать с вопросом NJ.
Дает ли реализация 1020 * хорошую производительность для вызовов NJ, является характеристикой этой реализации , а не языка или«степень достоверности» «R» в «RDBMS».Очень легко построить TRDBMS, которая не использует SQL, и которая дает нелепые времена выполнения для NJ.Язык SQL сам по себе имеет все необходимое для поддержки NJ.Если реализация поддерживает NJ, то NJ будет работать и в этой реализации.Дает ли она хорошую производительность, является характеристикой этой реализации, и низкую производительность какой-то конкретной реализации не следует «экстраполировать» на другие реализации или рассматривать как характеристику языка SQL как такового.
»Хороший / лучший дизайн таблицы должен устранить / минимизировать проблемы, которые создает естественное объединение. "
Проблемы, которые создает естественное объединение?Управление столбцами, которые появляются в аргументах объединения, легко выполняется путем добавления явных проекций (и, при необходимости, переименования) в нужные столбцы.Так же, как вы также хотите избегать SELECT *, насколько это возможно, по той же причине ...