Лучшая практика для совместного использования таблиц между приложениями - PullRequest
1 голос
/ 08 сентября 2011

В нашем небольшом офисе работает один экземпляр MySQL. У нас есть 3 разных приложения, которые все используют БД в качестве своего резервного хранилища. Одна схема имеет ВСЕ таблицы для всех трех приложений. Все приложения используют некоторые общие таблицы (например, tbl_users, tbl_facilities и т. Д.). Я использовал префикс приложения для объектов схемы, чтобы визуально отделить их от других объектов приложения, например:

  • foo_tbl_settings
  • foo_tbl_orders
  • foo_vw_recent_orders
  • doof_tbl_settings
  • doff_vw_parts

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

Обмен общими таблицами очень важен, и я не хочу отказываться от него.

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

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

На самом деле, совместное использование таблиц не очень хорошее поведение.

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

Общая схема может иметь общие таблицы.

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

0 голосов
/ 08 сентября 2011

Если честно, если нет веской причины делить одну БД, разве вы не можете иметь только одну БД на приложение?

Вы сказали, что они «разделяют» таблицы, но затем вы описали имена таблиц с разными именами, предполагая, что, хотя они имеют одинаковую структуру, они фактически не разделяют данные.Если я не правильно понимаю вещи, я бы предложил использовать одну БД на приложение.Это также позволит вам переместить БД и приложение в новое место, не отсоединяя его от других приложений на сервере.

...