Использование представлений в качестве интерфейса данных между модулями в базе данных - PullRequest
4 голосов
/ 10 июня 2010

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

Структура Приложения, работающего с базой данных, также будет модульной.

Это то, что иногда делается? С технической стороны, насколько я понимаю, у представлений не может быть первичных ключей - как бы я тогда обратился к такому представлению? Какие еще вопросы следует рассмотреть?

Ответы [ 2 ]

2 голосов
/ 10 июня 2010

Является ли это чем-то, что иногда делается?

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

С технической стороны, насколько я понимаю, представления не могут иметь первичные ключи - как бы я тогда обратился к такому представлению?

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

0 голосов
/ 10 июня 2010

Это правильный подход, хотя вы, конечно, должны быть осторожны:

  • Убедитесь, что ваши запросы очень хорошо протестированы на производительность с проанализированными планами запросов.Представления будут использовать индексы базовых таблиц, НО вероятность неправильного плана выполнения выше.

  • Убедитесь, что существует достаточно представлений, чтобы охватить всю необходимую информацию.

...