Как мне сделать программное обеспечение, которое сохраняет целостность и корректность базы данных? - PullRequest
0 голосов
/ 11 июня 2010

Я сделал проект приложения в Visual Studio 2008 C #, SQL Server из Visual Studio 2008.

База данных содержит около 20 таблиц и множество полей в каждой.

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

Теперь мне нужно

  1. Сделать проектирование в программное обеспечение, которое я могу поставить своему профессору,То есть он может просто дважды щелкнуть значок, и программа просто запустится.Для запуска отладки не требовалось Visual Studio 2008.

  2. База данных будет находиться на одном мощном компьютере (двухъядерная последняя версия Windows XP), и пользователь получит к ней доступ с другого компьютера, подключенного по локальной сети,Я могу изменить строку подключения к общей базе данных с помощью Visual Studio 2008 / отладчик всякий раз, когда сервер меняется, но как мне это сделать, когда это программное обеспечение?

  3. Там будет многоклиентов.Должен ли я давать одно и то же программное обеспечение каждому, чтобы они все могли подключаться к базе данных?Как будет поддерживаться целостность и правильность базы данных?Я имею в виду, что файл db.mdf будет находиться в папке, к которой будет предоставлен доступ для чтения и записи.Поэтому не обязательно, чтобы за один раз писал только один пользователь.Так есть ли код для этого или?

Ответы [ 4 ]

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

1) Один из вариантов - упаковать и развернуть приложение с помощью Installshield.

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

3) Как правило, SQL Server будет обрабатывать большинство одновременных операций чтения / записи данных и сохранять целостность данных в такте (при условии, что вы правильно структурировали таблицы).

Поскольку вы собираетесь развернуть это приложение на нескольких компьютерах, похоже, что вы можете просто установить клиент приложения на компьютеры X, и они получат доступ к базе данных SQL Server на компьютере базы данных. При таком подходе вам не нужно будет делиться файлом db.mdf, так как он будет доступен только для SQL Server, к которому приложение получит доступ.

Надеюсь, это поможет.

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

Лучший способ сохранить целостность данных - это внести их в базу данных:

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

  • Вам необходимо формально определить отношения первичный ключ / внешний ключ (и индексировать эти внешние ключи; они не индексируются автоматически).

  • Вам нужны уникальные ограничения для естественных ключей, если вы используете суррогатные ключи.

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

  • Вам нужен правильный тип данных для типа данных (например, не храните даты как тип данных varchar).

  • Если у вас есть определенные ограничения на значения некоторых из ваших полей, тогда вам нужны ограничения, чтобы применить их в базе данных или в приложении.

1 голос
/ 12 июня 2010

как будет поддерживаться целостность и правильность базы данных?

База данных должна поддерживать собственную внутреннюю согласованность с использованием ограничений .

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

Обновление

Asздесь запрошен некоторый код, притворяющийся C # (я сам его мало использую):

private Method(SqlConnection connection)
{
    using (SqlTransaction transaction = connection.BeginTransaction())
    {
        try
        {
            // Use the connection here
            ....

            transaction.Commit();
        } 
        catch
        {
            transaction.Rollback();
            throw;
        }
    }
}

Если все операторы в блоке try завершатся успешно, они будут зафиксированы вместе.Если какой-либо оператор завершится неудачно, транзакция будет отменена, а база данных не будет изменена.

Строго говоря, оператор с использованием позаботится об откате, если транзакция не выполнена.совершено, поэтому, если вы не обрабатываете ошибки, вы можете написать такой же код, например:

private Method(SqlConnection connection)
{
    using (SqlTransaction transaction = connection.BeginTransaction())
    {
        // Use the connection here
        ....

        transaction.Commit();
    }
}
0 голосов
/ 11 июня 2010
  1. Напишите программу установки, которая копирует исполняемый файл и вспомогательные библиотеки DLL на компьютер пользователя. Я считаю, что есть проект установки, который вы можете использовать в Visual Studio 2008.

2) Вы должны использовать сервер Windows 2000, Windows XP ограничивает количество подключений. Прочитайте строку подключения из реестра и предоставьте диалоговое окно настроек для изменения подключения.

3) Не используйте доступ MS, вы должны использовать настоящий SQL Server, который обрабатывает одновременный доступ пользователей. (SQL Server, MySQL, PostgreSQL, Oracle и т. Д.) Вам необходимо переписать слой доступа к базе данных, используя SQL, чтобы не повредить данные.

Даже не думайте о развертывании этого проекта как есть, иначе вас ждет кошмар обслуживания. Есть ли опытные разработчики или даже ваш профессор, к которому вы можете обратиться за помощью? Здесь многое нужно сделать, чтобы сделать функциональное приложение.

...