Низкий нормальный дизайн базы данных на реляционной RDBS - PullRequest
1 голос
/ 20 января 2012

Моя подруга создает приложение после того, как разработала базу данных.Однако она просто поместила все в две первые таблицы NF, которые имеют несколько функциональных зависимостей от не-PK столбцов.Действительно, она добавила PK после того, как я предложил ее.Для 3-го + NF-проекта ее системы может потребоваться от 7 до 15 таблиц.

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

Есть ли другие веские причины убедить ее разработать систему с более высокой нормальной формой?Или ее решение достаточно хорошее практически?

1 Ответ

4 голосов
/ 20 января 2012

Она, вероятно, неквалифицированная и не подозревает об этом.В целом уже было продемонстрировано, что таким людям невозможно помочь.

Она, вероятно, думает, что она может получить весь этот код в правильном порядке, без единой ошибки.Это более чем просто вероятная нелепая переоценка ее собственных способностей.

Я советую вам позволить ей просто делать свои ошибки.Для ВАС это сэкономит время попыток и разочарование от неуспеха в прохождении сообщения, а для ЕЁ это даст ей возможность учиться на собственных ошибках (единственный вариант остался, так как она явно не хочет учитьсяот ошибок других людей), и это избавит ее от разочарования от необходимости вашего последующего приезда с этим славным «Я так вам сказал».

Но если вы действительно настаиваете на том, чтобы попробоватьзатем вы можете указать ей, что:

  • ее таблицы 1NF на самом деле являются представлениями (материализованными представлениями) таблиц 3 / BC NF, которые она добровольно не реализует.
  • обновления, которые, вероятно, ожидает сделать ее конечный пользователь, скорее всего, являются обновлениями этих таблиц 7-15 3 / BC NF.(Я говорю это, потому что вы указали в качестве ее единственной причины для более низкой НФ, что она хочет избежать такого «огромного» количества таблиц - цинизм в «огромных» является преднамеренным.)
  • но обновления, которыеОжидается, что СУБД - это обновления таблиц 1NF (которые являются представлениями).
  • Поэтому ее проблема сводится к «извлечению соответствующих обновлений для таблиц 3NF из обновлений, указанных в качестве обновлений представлений этих таблиц».
  • Таким образом, обеспечение правильности всего своего SP-кода является проблемой, связанной с обновлением представлений.
  • И угадайте, что после более чем 40 лет исследований реляционной модели,тысячи исследователей, чьи интеллектуальные способности превосходят ее, вероятно, на порядки, именно эта проблема обновления представлений до сих пор остается нерешенной ... (хотя она и предоставляется, ее проблема не в "обновлении представлений в целом", а в "обновлении представлений внекоторые конкретные ситуации ". Тем не менее, я очень сомневаюсь, что она умеет определять всесложные сложности.)
...