Разработка информационной системы "Археологический музей"
Создание реляционной базы данных с помощью системы управления 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
Подобные документы
Разработка реляционной базы данных информационной системы для учета доходов потребительского общества средствами программного продукта СУБД MS SQL Server 2012. Преобразование концептуальной модели данных к реляционной. Набор предварительных таблиц.
курсовая работа [11,9 M], добавлен 06.10.2014Программные продукты, используемые при проектировании базы данных. Разработка базы данных "Библиотека" с использование программного проекта Microsoft SQL Server. Создание таблиц, триггеров, пользователей, репликации, запросов, функций, процедур.
курсовая работа [897,6 K], добавлен 21.11.2011Разработка базы данных для информационной поддержки деятельности аптеки с целью автоматизированного ведения данных о лекарствах аптеки. Проектирование схемы базы данных с помощью средства разработки структуры базы данных Microsoft SQL Server 2008.
курсовая работа [3,6 M], добавлен 18.06.2012Разработка реляционной базы данных "Библиотека" с помощью СУБД Microsoft SQL Server 2000 и программной оболочки в Microsoft Access. Экономическое обоснование результатов внедрения программного продукта. Инструкция по эксплуатации клиентского приложения.
курсовая работа [3,4 M], добавлен 01.07.2011Освоение сервисной системы управления базами данных Microsoft SQL. Разработка базы данных "Служба АТС" в среде Microsoft SQL Server Management Studio и создание запросов на языке SQL. Апробация инфологической модели "сущность - связь" базы данных.
курсовая работа [2,9 M], добавлен 29.06.2015Разработка базы данных информационной системы предприятия. Хранение информации о проведенных мероприятиях, его стоимости, дате и месте проведения. Использование программного продукта Microsoft SQL Server 2008 R2. Формирование информационных запросов.
дипломная работа [508,9 K], добавлен 21.02.2016Программные средства для реализации базы данных и серверной части информационной системы "Учета технического обслуживания станков" средствами СУБД Microsoft SQL Server 2008. Разработка триггеров для поддержки сложных ограничений целостности в базе данных.
курсовая работа [768,3 K], добавлен 01.02.2013Проектирование базы данных для автоматизации работы салона художественной татуировки в среде разработки Delphi 7 с использование сервера баз данных Microsoft SQL Server 2008 R2. Схема алгоритма системы. Протокол тестирования программного продукта.
курсовая работа [539,3 K], добавлен 15.02.2017Анализ проектирования автоматизированной информационной системы компьютерного магазина "Джей". Разработка базы данных на языке Transact-SQL в системе управления базами данных Microsoft SQL Server 2000. Расчет себестоимости и цены программного продукта.
курсовая работа [2,3 M], добавлен 16.08.2012Разработка информационного и программного обеспечения предметной области, связанной с работой магазина по продаже сувениров. Построение функциональной и информационной модели. Управление базой данных с помощью системы приложения Microsoft SQL Server 6.0.
курсовая работа [2,7 M], добавлен 25.01.2010