Посмотрел другие вопросы и не вижу четкого ответа на этот вопрос.
Мы - небольшая команда разработчиков, работающая над тем, что можно описать как 3 отдельных фронт-офисных "приложения" (OnlineOrders через asp web, приложение winforms TradeManagement, ASP.NET ReportingSuite).
Однако, что бы там ни было, каждое из этих приложений использует одну центральную базу данных SQL2005, пусть она называется MainDB. Все они используют одинаковую структуру таблицы "Заказы", "Пользователи", "Учетные записи" и т.д., В значительной степени 80% объектов используются каким-либо образом в каждом приложении.
В TFS я думал, что каждое из этих 3-х приложений - это отдельные проекты с отслеживанием рабочих элементов, отчетами и т.д., Которые могут нам дать. Похоже, что все работает нормально, создавая наши решения на основе кода.
Теперь я пытаюсь понять, как я могу получить базу данных MainDB в TFS Source Control. Я не вижу очевидного способа сделать это.
Вопрос заключается в следующем: должен ли я создать проект базы данных для MainDB, экспортировать схему в сценарии проекта и добавить этот проект базы данных в каждое решение, внутри каждого проекта TFS?
Или у меня должен быть отдельный проект TFS только для моего проекта базы данных? И разработчик должен будет открыть как проект TFS базы данных MainDB, так и (например) проект TFS TradeManagement, чтобы разработать новую функцию (так как большинство новых функций будет также включать некоторые изменения в БД)? Кажется, очень тяжелые руки.
Или это обычное дело просто иметь один массивный проект TFS, который называется "Все", и внутри которого есть ветки функций для проектов кода, ветвь базы данных для базы данных и любые другие проекты, которые могут использовать базу данных MainDB? (в img предположим, что сценарии MainDB находятся в папке "База данных")
и т.д. Человек, я в замешательстве. Codeplex, кажется, указывает на простоту, помещая все решения внутри одного большого решения. Это устойчиво?
Спасибо за ответы, действительно здорово.
Идея рассматривать базу данных как API интересна, она действительно такая. База данных заполняется из многочисленных источников, некоторые внутренние, некоторые внешние, некоторые приложения получают данные, которые были введены через другое приложение. Контролировать его как API-интерфейс, в который каждое приложение входит, и это очень полезная аналогия, спасибо за это.
Затраты на отсутствие поддержки зависимостей вызывают беспокойство, но я думаю, что мы можем быть достаточно дисциплинированными, чтобы делать наши ветвления упорядоченным образом. Разветвление кодовой базы приложения, вероятно, будет более сложным, чем база данных - мы действительно просто хотим, чтобы база данных находилась под контролем исходного кода каким-то образом, чтобы удовлетворить требования аудита Сарбаннес-Оксли.
Мне придется подумать еще немного об этом.
Горизонтальное разбиение БД - это не то, что я рассмотрел. Такое ощущение, что слишком много объектов базы данных совместно используется, чтобы иметь возможность разбивать его на горизонтальные блоки - у нас были бы одни и те же объекты (таблицы/спрэки и т.д.) В нескольких блоках, которые, я думаю, могли бы еще больше сбить нас с толку.