Разработка информационной системы "Археологический музей"

Создание реляционной базы данных с помощью системы управления Microsoft SQL Server 2012. Разработка программного продукта, который представляет собой систему учета археологического музея и демонстрирует возможности взаимодействия с созданной базой данных.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 14.12.2015
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

ФГБОУ ВПО Кубанский государственный технологический университет

(КубГТУ)

Кафедра Информационных систем и программирования

Институт Компьютерных систем и информационной безопасности

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

Базы данных

на тему Разработка ИС "Археологический музей"

2015 г.

Реферат

РЕЛЯЦИОННАЯ БАЗА ДАННЫХ, VISUAL STUDIO 2015, MICROSOFT SQL SERVER 2012

Пояснительная записка курсового проекта содержит

31 стр., 11 рис., 2 табл., 5 источников.

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

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

Содержание

  • Введение
  • 1. Нормативные ссылки
  • 2. Анализ предметной области и требований
  • 2.1 Цель автоматизации
  • 2.2 Перечень задач/процессов, подлежащих автоматизации в рамках курсового проектирования
  • 2.3 Участники автоматизируемых процессов
  • 2.4 Концептуальная модель БД с описанием
  • 3. Разработка базы данных и программных приложений к ней
  • 3.1 Логическая модель БД с описанием
  • 3.2 ER-диаграмма с описанием
  • 3.3 Перечень функций программы
  • 4. Руководство пользователя
  • Заключение
  • Список использованных источников
  • Приложение

Введение

В данном курсовом проекте будут исследованы основные понятия проектирования реляционных баз данных, алгоритма создания и редактирования баз данных с помощью СУБД Microsoft SQL Server 2012. На первом этапе будет проведено исследование основного теоретического материала по данным темам, а также изучение основных алгоритмов. Эти исследования будут проводиться с помощью источников, указанных как рекомендованные.

Затем для демонстрации работы алгоритмов будет написана необходимая программа на языке программирования C# в среде Visual Studio2015. По окончании сборки необходимой программы будет проведено тестирование.

база данные программный музей

1. Нормативные ссылки

ГОСТ Р 1.5-2004 Стандарты национальные Российской Федерации. Правила построения, изложения, оформления и обозначения

ГОСТ 2.104-68 ЕСКД. Основные надписи

ГОСТ 7.80-2000 СИБИД. Библиографическая запись. Заголовок. Общие требования и правила составления

ГОСТ 7.82-2001 СИБИД. Библиографическая запись. Библиографическое описание электронных ресурсов. Общие требования и правила составления

ГОСТ 7.9-95 СИБИД. Реферат и аннотация. Общие требования

ГОСТ 19.001-77 ЕСПД. Общие положения

ГОСТ 19.104-78 ЕСПД. Основные надписи

ГОСТ 19.105-78 ЕСПД. Общие требования к программным документам

ГОСТ 19.401-78 ЕСПД. Текст программы. Требования к содержанию и оформлению

ГОСТ 19.402-78 ЕСПД. Описание программы

ГОСТ 19.404-79 ЕСПД. Пояснительная записка. Требования к содержанию и оформлению

2. Анализ предметной области и требований

2.1 Цель автоматизации

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

В настоящее время знакомство с коллекциями и изучение их отдельных экспонатов приобретает все большую популярность среди различных социальных групп общества. Музей как социально-культурное учреждение завоевывает все более крепкие позиции в системе культурного просвещения посетителей. Сейчас музей становится объединяющим звеном для совершенно различных по своим направлениям культурных интересов людей.

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

2.2 Перечень задач/процессов, подлежащих автоматизации в рамках курсового проектирования

При проектировании системы основной задачей являлось автоматизирование следующих процессов:

- ведение полной базы экспонатов, находящихся в музее;

- ведение базы, содержащей информацию об археологах;

- ведение и дополнение базы университетов;

- возможность модификации данных в таблицах;

- поддержка многопользовательности;

2.3 Участники автоматизируемых процессов

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

Основные варианты использования, доступные участникам автоматизируемого процесса, представлены на диаграмме (рис. 1).

Рисунок 1 - Диаграмма вариантов использования

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

2.4 Концептуальная модель БД с описанием

Т а б л и ц а 1 - Объекты концептуальной модели

Объект

Атрибуты

Первичный ключ

University

ID

Name

City

ID

Place

ID

Name

ID

KindOfEra

ID

Name

ID

ExType

ID

Name

ID

Exhibit

ID

Name

AgeID

ExTypeID

PlaceID

ArchaeologistID

ID

Era

ID

Name

BeginDate

EndDate

KindOfEraID

ID

Archaeologist

ID

Name

Age

UniversityID

ID

ApplicationUser

ID

Name

Login

Password

ID

Т а б л и ц а 2 - Связи концептуальной модели

Связь

Объекты

Показатель кардинальности

Степень участия

Contain_EE

Exhibit

AgeID

1 : N

1 : N

Полная

Полная

Contain_RE

Exhibit ExTypeID

1 : N

1 : N

Полная

Полная

Contain_ER

Exhibit

PlaceID

1 : N

1 : N

Полная

Полная

Contain_RR

Exhibit ArchaeologistID

1 : N

1 : N

Полная

Полная

Have_EE

Archaeologist UniversityID

1 : N

1 : N

Полная

Полная

Have_RE

Era

BeginDate

1 : N

1 : N

Полная

Полная

Have_ER

Era

EndDate

1 : N

1 : N

Полная

Полная

Have_RR

Era

KindOfEraID

1 : N

1 : N

Полная

Полная

На рисунке 2 представлена концептуальная модель базы данных.

Рисунок 2 - Концептуальная модель БД

3. Разработка базы данных и программных приложений к ней

3.1 Логическая модель БД с описанием

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

В реляционной модели данных (РБД) связь типа "многие ко многим" не может быть представлена напрямую. Она убирается путем добавления новых таблиц.

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

Рисунок 3 - Логическая модель БД

Основные объекты базы данных:

1) "Archaeologist" используется для хранения данных об археологах. Данная таблица содержит идентификатор, имя и возраст археолога, а также ссылку на университет, в котором он работает.

2) "University" содержит данные об университетах. Данная таблица содержит идентификатор, название и город, в котором находится университет.

3) "Exhibit" используется для хранения экспонатов. Данная таблица хранит уникальный идентификатор, наименование, место нахождения, автора раскопки, тип и эпоху, к которой принадлежит экспонат.

4) "Place" используется для хранения мест раскопок. Данная таблица хранит уникальный идентификатор и наименование места нахождения.

5) "Era" используется для хранения эпох. Данная таблица хранит уникальный идентификатор и наименование эпохи, врем начала и конца эпохи, а также тип, к которому принадлежит.

6) "KindOfEra" используется для хранения типов эпох. Данная таблица хранит уникальный идентификатор и наименование типа эпохи.

7) "ExType" используется для хранения типов экспонатов. Данная таблица хранит уникальный идентификатор и наименование типа экспоната.

3.2 ER-диаграмма с описанием

На основе расширенной концептуальной модели создаем БД "Crocodile" в Microsoft SQL Server 2012. Диаграмма БД выглядит следующим образом (рис. 4):

Рисунок 4 - Реляционная модель БД

3.3 Перечень функций программы

Проектируемое клиент-серверное приложение должно выполнять следующие функции:

1) Осуществление аутентификации;

2) Вывод всех экспонатов;

3) Выбор нужной таблицы из всех таблиц базы;

4) Добавление элементов в выбранную таблицу;

5) Изменение и удаление выбранного элемента;

6) Поиск по имени элемента.

4. Руководство пользователя

При запуске приложения пользователь видит стартовое окно, в котором представлен список всех экспонатов (рис. 5).

Рисунок 5 - Стартовое окно программы

Нажав на экспонат можно увидеть подробную информацию о нём (рис. 6).

Рисунок 6 - Подробная информация об экспонате

Для того, чтобы иметь возможность просматривать таблицы, необходимо иметь учётную запись менеджера, нажав на "Login" в правой верхней части экрана вводим логин "manager" и пароль "manager" (рис. 7).

Рисунок 7 - Аутентификация

Менеджер имеет привилегии только для просмотра содержимого таблиц (рис. 8).

Рисунок 8 - Управление с учётной записью менеджера

Для того, чтобы иметь возможность модифицировать таблицы, необходимо авторизоваться под учётной записью администратора (логин "admin" пароль "admin"), нажав на "Login" в правой верхней части экрана (рис. 9).

Рисунок 9 - Окно управления

Для изменения элемента необходимо нажать кнопку "Edit" (рис. 10).

Рисунок 10 - Изменение элемента

При попытке удаления программа просит подтверждения, после получения которого удаляет элемент из таблицы (рис. 11).

Рисунок 11 - Изменение элемента

Заключение

В заключении хочется отметить важность использования реляционных баз данных. Благодаря существованию такого понятия, как базы данных, многие процессы могут быть легко автоматизированы, что достаточно полезно для самых различных предприятий и компаний. В современном мире сильно ощутим информационный рывок. Нас стал окружать огромный объем информации. Информация для человека играет немаловажную роль, поэтому основной из задач человечества является обработка данной информации.

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

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

Список использованных источников

1. Малыхина М.П. Базы данных: основы, проектирование, использование: учебное пособие".-3-е изд. СПб.: БХВ-Петербург, 2007. -528 с.

2. Роберт Уолтерс и др. SQL Server 2012: ускоренный курс для профессионалов./Пер. с англ. - М.: Издательский дом "Вильямс", 2014. -768 с.

3. Александр Волоха. Microsoft SQL Server 2012. Новые возможности. - СПб: Питер, 2012.- 304 с.

4. Сеппа Д. Microsoft ADO.BET/Пер. с англ.- М.; Издательско-торговый дом "Русская редакция", 2003. -640 стр.

5. Нейгел, Кристиан, Ивьен, Билл, Глинн, Джей, Скиннер, Уотсон, Карли. C# 2005 и платформа .NET 3.0 для профессионалов.; Пер. с англ. - М.: ООО "И.Д.Вильямс", 2008.- 1376+416 (на CD) с.: ил.

Приложение А

Листинг программы:

Класс MainViewModel:

using ArchMuseumManager.Infrastructure;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using ArchMuseumManager.DAL.Entities;

using System.Collections.ObjectModel;

using System.Windows;

using MahApps.Metro;

namespace ArchMuseumManager.ViewModels

{

public class MainViewModel : BaseViewModel

{

private bool isLogging;

public bool IsLogging

{

get { return isLogging; }

set { isLogging = value; NotifyPropertyChanged(); }

}

private ApplicationUser currentUser;

public ApplicationUser CurrentUser

{

get { return currentUser; }

set { currentUser = value; NotifyPropertyChanged(); }

}

private Exhibit selectedExhibit;

public Exhibit SelectedExhibit

{

get { return selectedExhibit; }

set { selectedExhibit = value; NotifyPropertyChanged(); }

}

public ObservableCollection<Exhibit> Exhibits

{

get { return Repository.Exhibits; }

set { NotifyPropertyChanged(); }

}

public void Login(string login, string password)

{

var user = Repository.Users.FirstOrDefault(u => u.Login == login && u.Password == password);

if (user == null)

{

MessageBox.Show("Incorrect login");

return;

}

else

{

CurrentUser = user;

IsLogging = false;

ChangeWindowTheme();

}

}

private void ChangeWindowTheme()

{

var theme = ThemeManager.DetectAppStyle(Application.Current);

if(CurrentUser != null)

{

ThemeManager.ChangeAppStyle(Application.Current,

ThemeManager.GetAccent("Mauve"),

ThemeManager.GetAppTheme("BaseLight"));

}

else

{

ThemeManager.ChangeAppStyle(Application.Current,

ThemeManager.GetAccent("Olive"),

ThemeManager.GetAppTheme("BaseLight"));

}

}

private RelayCommand logOutCommand;

public RelayCommand LogOutCommand

{

get

{

if (logOutCommand == null)

logOutCommand = new RelayCommand(p => LogOut());

return logOutCommand;

}

}

private void LogOut()

{

CurrentUser = null;

ChangeWindowTheme();

}

private RelayCommand readMoreCommand;

public RelayCommand ReadMoreCommand

{

get

{

if (readMoreCommand == null)

readMoreCommand = new RelayCommand(p => ReadMore(p));

return readMoreCommand;

}

}

private RelayCommand closeReadMoreCommand;

public RelayCommand CloseReadMoreCommand

{

get

{

if (closeReadMoreCommand == null)

closeReadMoreCommand = new RelayCommand(p => SelectedExhibit = null);

return closeReadMoreCommand;

}

}

private RelayCommand openLoginDialogCommand;

public RelayCommand OpenLoginDialogCommand

{

get

{

if (openLoginDialogCommand == null)

openLoginDialogCommand = new RelayCommand(p => IsLogging = true, p => CurrentUser == null);

return openLoginDialogCommand;

}

}

private RelayCommand closeLoginDialogCommand;

public RelayCommand CloseLoginDialogCommand

{

get

{

if (closeLoginDialogCommand == null)

closeLoginDialogCommand = new RelayCommand(p => IsLogging = false, p => CurrentUser == null);

return closeLoginDialogCommand;

}

}

private RelayCommand openManageWindowCommand;

public RelayCommand OpenManageWindowCommand

{

get

{

if (openManageWindowCommand == null)

openManageWindowCommand = new RelayCommand(p => OpenManageWindow(), p => CurrentUser != null);

return openManageWindowCommand;

}

}

private void OpenManageWindow()

{

var window = new ManageWindow();

var viewModel = new ManageViewModel();

viewModel.IsAdmin = CurrentUser.Login == "admin";

window.DataContext = viewModel;

window.ShowDialog();

Repository = new EFRepository();

Exhibits = Repository.Exhibits;

}

private void ReadMore(object p)

{

var exhibit = p as Exhibit;

if (exhibit != null)

{

SelectedExhibit = exhibit;

}

}

public MainViewModel()

{

//CurrentUser = Repository.Users.FirstOrDefault(u => u.Login == "admin");

ChangeWindowTheme();

}

}

}

Класс ManageBaseViewModel:

using ArchMuseumManager.DAL.Entities;

using ArchMuseumManager.Infrastructure;

using ArchMuseumManager.Models;

using Newtonsoft.Json;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Data;

using System.Windows.Input;

namespace ArchMuseumManager.ViewModels

{

public class ManageBaseViewModel<T>:BaseViewModel where T: class, IEntity, new()

{

public DefaultMapper Mapper { get; set; } = new DefaultMapper();

private T current;

public T Current

{

get { return current; }

set { current = value; NotifyPropertyChanged(); }

}

private ICollectionView entities;

private EFRepository repository;

public ICollectionView Entities

{

get

{

if (entities == null)

{

entities = CollectionViewSource.GetDefaultView(repository.GetDbSet<T>());

entities.Filter = Search_Filter;

}

return entities;

}

set { entities = value; NotifyPropertyChanged(); }

}

private string searchCriteria;

public string SearchCriteria

{

get { return searchCriteria; }

set { searchCriteria = value; NotifyPropertyChanged(); Entities.Refresh(); }

}

private bool Search_Filter(object item)

{

if (item != null)

{

var name = (item as IEntity).Name.ToString().ToLower();

return SearchCriteria != null ? name.StartsWith(SearchCriteria.ToLower()) : true;

}

return false;

}

public ManageBaseViewModel(EFRepository repository)

{

this.repository = repository;

}

private ICommand saveCommand;

public ICommand SaveCommand

{

get

{

if (saveCommand == null)

{

saveCommand = new RelayCommand(o => Save(), o => CanSave(o));

}

return saveCommand;

}

}

private ICommand closeFormsCommand;

public ICommand CloseFormsCommand

{

get

{

if (closeFormsCommand == null)

{

closeFormsCommand = new RelayCommand(o => { CloseForms(); });

}

return closeFormsCommand;

}

}

private ICommand addCommand;

public ICommand AddCommand

{

get

{

if (addCommand == null)

{

addCommand = new RelayCommand(o => { Current = new T() { ID = -1}; });

}

return addCommand;

}

}

private ICommand editCommand;

public ICommand EditCommand

{

get

{

if (editCommand == null)

{

editCommand = new RelayCommand(o => Edit(o));

}

return editCommand;

}

}

private ICommand deleteCommand;

public ICommand DeleteCommand

{

get

{

if (deleteCommand == null)

{

deleteCommand = new RelayCommand(o => Delete(o));

}

return deleteCommand;

}

}

private void Delete(object o)

{

var entity = o as T;

if (entity != null)

{

var status = MessageBox.Show("Are you sure want to remove this item?", "Removing", MessageBoxButton.YesNo);

if (status == MessageBoxResult.No) return;

if (status == MessageBoxResult.Yes)

{

var exhibitToDelete = repository.GetDbSet<T>().FirstOrDefault(op => op.ID == entity.ID);

repository.Delete(exhibitToDelete);

}

}

}

private void Edit(object o)

{

var entity = o as T;

if (entity != null)

{

var entityCopy = new T();

Map(entity, entityCopy);

Current = entityCopy;

}

}

public void Map(T source, T destination)

{

var type = typeof(T);

var properties = type.GetProperties();

foreach (var property in properties)

{

property.SetValue(destination, property.GetValue(source));

}

}

private void CloseForms()

{

Current = null;

}

private bool CanSave(object o)

{

return Current != null && Current.IsValid();

}

private void Save()

{

if (Current.ID == -1)

{

repository.Create(Current);

Entities.Refresh();

}

else

{

var entity = repository.GetDbSet<T>().FirstOrDefault(o => o.ID == Current.ID);

Map(Current, entity);

//Mapper.Map(Current, entity);

repository.Update(entity);

}

Current = null;

}

}

}

Класс ManageViewModel:

using ArchMuseumManager.DAL.Entities;

using ArchMuseumManager.Infrastructure;

using System;

using System.Collections.Generic;

using System.Collections.ObjectModel;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ArchMuseumManager.ViewModels

{

public class ManageViewModel : BaseViewModel

{

#region Collections

public ObservableCollection<Exhibit> Exhibits

{

get { return Repository.Exhibits; }

set { NotifyPropertyChanged(); }

}

public ObservableCollection<KindOfEra> KindOfEras

{

get { return Repository.KindOfEras; }

set { NotifyPropertyChanged(); }

}

public ObservableCollection<ExType> ExTypes

{

get { return Repository.ExTypes; }

set { NotifyPropertyChanged(); }

}

public ObservableCollection<Era> Eras

{

get { return Repository.Eras; }

set { NotifyPropertyChanged(); }

}

public ObservableCollection<Archaeologist> Archaeologists

{

get { return Repository.Archaeologists; }

set { NotifyPropertyChanged(); }

}

public ObservableCollection<University> Universities

{

get { return Repository.Universities; }

set { NotifyPropertyChanged(); }

}

public ObservableCollection<Place> Places

{

get { return Repository.Places; }

set { NotifyPropertyChanged(); }

}

#endregion

private bool isAdmin;

public bool IsAdmin

{

get { return isAdmin; }

set { isAdmin = value; NotifyPropertyChanged(); }

}

#region ViewModels

private ManageBaseViewModel<Exhibit> exhibitsViewModel;

public ManageBaseViewModel<Exhibit> ExhibitsViewModel

{

get { return exhibitsViewModel; }

set { exhibitsViewModel = value; NotifyPropertyChanged(); }

}

private ManageBaseViewModel<KindOfEra> kindOfErasViewModel;

public ManageBaseViewModel<KindOfEra> KindOfErasViewModel

{

get { return kindOfErasViewModel; }

set { kindOfErasViewModel = value; NotifyPropertyChanged(); }

}

private ManageBaseViewModel<Archaeologist> archaeologistsViewModel;

public ManageBaseViewModel<Archaeologist> ArchaeologistsViewModel

{

get { return archaeologistsViewModel; }

set { archaeologistsViewModel = value; NotifyPropertyChanged(); }

}

private ManageBaseViewModel<Era> erasViewModel;

public ManageBaseViewModel<Era> ErasViewModel

{

get { return erasViewModel; }

set { erasViewModel = value; NotifyPropertyChanged(); }

}

private ManageBaseViewModel<ExType> exTypesViewModel;

public ManageBaseViewModel<ExType> ExTypesViewModel

{

get { return exTypesViewModel; }

set { exTypesViewModel = value; NotifyPropertyChanged(); }

}

private ManageBaseViewModel<Place> placesViewModel;

public ManageBaseViewModel<Place> PlacesViewModel

{

get { return placesViewModel; }

set { placesViewModel = value; NotifyPropertyChanged(); }

}

private ManageBaseViewModel<University> universitiesViewModel;

public ManageBaseViewModel<University> UniversitiesViewModel

{

get { return universitiesViewModel; }

set { universitiesViewModel = value; NotifyPropertyChanged(); }

}

#endregion

public ManageViewModel()

{

ExhibitsViewModel = new ManageBaseViewModel<Exhibit>(Repository);

KindOfErasViewModel = new ManageBaseViewModel<KindOfEra>(Repository);

ArchaeologistsViewModel = new ManageBaseViewModel<Archaeologist>(Repository);

ErasViewModel = new ManageBaseViewModel<Era>(Repository);

ExTypesViewModel = new ManageBaseViewModel<ExType>(Repository);

PlacesViewModel = new ManageBaseViewModel<Place>(Repository);

UniversitiesViewModel = new ManageBaseViewModel<University>(Repository);

}

}

}

Класс Exhibit:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ArchMuseumManager.DAL.Entities

{

public class Exhibit: ObservableObject, IEntity

{

private int id;

public int ID

{

get { return id; }

set { id = value; NotifyPropertyChanged(); }

}

private string name;

public string Name

{

get { return name; }

set { name = value; NotifyPropertyChanged(); }

}

private int ageID;

public int AgeID

{

get { return ageID; }

set { ageID = value; NotifyPropertyChanged(); }

}

private int exTypeID;

public int ExTypeID

{

get { return exTypeID; }

set { exTypeID = value; NotifyPropertyChanged(); }

}

private int placeID;

public int PlaceID

{

get { return placeID; }

set { placeID = value; NotifyPropertyChanged(); }

}

private int archaeologistID;

public int ArchaeologistID

{

get { return archaeologistID; }

set { archaeologistID = value; NotifyPropertyChanged(); }

}

private Era age;

public virtual Era Age

{

get { return age; }

set { age = value; NotifyPropertyChanged(); }

}

private Archaeologist archaeologist;

public virtual Archaeologist Archaeologist

{

get { return archaeologist; }

set { archaeologist = value; NotifyPropertyChanged(); }

}

private Place place;

public virtual Place Place

{

get { return place; }

set { place = value; NotifyPropertyChanged(); }

}

private ExType exType;

public virtual ExType ExType

{

get { return exType; }

set { exType = value; NotifyPropertyChanged(); }

}

public override string ToString()

{

return Name;

}

public bool IsValid()

{

return !string.IsNullOrWhiteSpace(Name)

&& Age != null

&& Archaeologist != null

&& Place != null

&& ExType != null;

}

}

}

Класс ExType:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ArchMuseumManager.DAL.Entities

{

public class ExType : ObservableObject, IEntity

{

private int id;

public int ID

{

get { return id; }

set { id = value; NotifyPropertyChanged(); }

}

private string name;

public string Name

{

get { return name; }

set { name = value; NotifyPropertyChanged(); }

}

public override string ToString()

{

return Name;

}

public bool IsValid()

{

return !string.IsNullOrWhiteSpace(Name);

}

}

}

Реализованные транзакции:

SET NOCOUNT ON;

--Состояние до начала транзакции

SELECT

'До транзацкии' AS "Состояние"

,ExTypeID AS "Код"

,Name AS "Имя"

,@@SPID AS "Процесс"

,@@TRANCOUNT AS "Количество транзакций"

FROM ArchMuseum.DBO.Exhibits ORDER BY ExTypeID;

--Начало транзакции

BEGIN TRANSACTION;

SELECT

@@TRANCOUNT AS "Количество транзакций";

UPDATE ArchMuseum.DBO.Exhibits

SET ExTypeID -= 0

WHERE Name=N'Computer';

SELECT

'До транзацкии' AS "Состояние"

,ExTypeID AS "Код"

,Name AS "Имя"

,@@SPID AS "Процесс"

,@@TRANCOUNT AS "Количество транзакций"

FROM ArchMuseum.DBO.Exhibits ORDER BY ExTypeID;

UPDATE ArchMuseum.DBO.Exhibits

SET ExTypeID += 0

WHERE Name =N'Nature';

SELECT

'До транзацкии' AS "Состояние"

,ExTypeID AS "Код"

,Name AS "Имя"

,@@SPID AS "Процесс"

,@@TRANCOUNT AS "Количество транзакций"

FROM ArchMuseum.DBO.Exhibits ORDER BY ExTypeID;

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.