Инфологическое проектирование 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Инфологическое проектирование



СОДЕРЖАНИЕ

ВВЕДЕНИЕ. 3

1. ПОСТАНОВКА ЗАДАЧИ.. 5

1.1. Цель работы.. 5

1.2. Постановка задачи. 5

1.3. Вариант типового задания. 5

2. ИНФОЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ. 7

3. ОПРЕДЕЛЕНИЕ ТРЕБОВАНИЙ К ОПЕРАЦИОННОЙ ОБСТАНОВКЕ. 9

3.1. Оценка занимаемого объема данных. 9

3.2. Требования к установленному ПО.. 9

4. ВЫБОР СУБД И ИНСТРУМЕНТАЛЬНЫХ ПРОГРАММНЫХ СРЕДСТВ.. 10

5. ЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ БД.. 12

6. ФИЗИЧЕСКОЕ ПРОЕКТИРОВАНИЕ БД.. 15

7. РАЗРАБОТКА ПОДСИСТЕМЫ БЕЗОПАСНОСТИ.. 17

8. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.. 19

ЗАКЛЮЧЕНИЕ. 23

БИБЛИОГРАФИЧЕСКИЙ СПИСОК.. 24

ПРИЛОЖЕНИЯ.. 25

Листинг. 25

 

ВВЕДЕНИЕ

Реляционная база данных (БД) – это набор данных с предопределенными связями между ними. Эти данные организованны в виде набора таблиц, состоящих из столбцов и строк. В таблицах хранится информация об объектах, представленных в базе данных. В каждом столбце таблицы хранится определенный тип данных, в каждой ячейке – значение атрибута. Каждая стока таблицы представляет собой набор связанных значений, относящихся к одному объекту или сущности. Каждая строка в таблице может быть помечена уникальным идентификатором, называемым первичным ключом, а строки из таблиц могут быть связаны внешними ключами.

SQL (Structured Query Language) – основной интерфейс работы с реляционными БД. Стандарт ANSI SQL поддерживается всеми популярными ядрами реляционных БД. SQL используется для добавления, обновления и удаления строк данных, извлечения наборов данных для обработки транзакций.

Microsoft Office Access - реляционная система управления базами данных (СУБД) корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных.

Целостность данных – это полнота, точность и единообразие данных. Для поддержания целостности данных в реляционных БД используется ряд инструментов. В их число входят первичные ключи, внешние ключи, ограничения «Not NULL», «Unique», «Default» и «Check». Эти ограничения целостности позволяют применять практические правила к данным в таблицах.

Транзакция в БД – это один или несколько операторов SQL, выполненных в виде последовательности операций, представляющих собой единую логическую задачу. Транзакция представляет собой неделимое действие, то есть она должна быть выполнена как единое целое и либо должна быть записана в базу данных целиком, либо не должен быть записан ни один из ее компонентов. Для соблюдения целостности данных все транзакции в БД должны соответствовать требованиям ACID, то есть быть атомарными, единообразными, изолированными и надежными. (Атомарность – условие, при котором либо транзакция успешно выполняется целиком, либо, если какая-либо из ее частей не выполняется, вся транзакция отменяется. Единообразие – условие, при котором данные, записываемые в базу данных в рамках транзакции, должны соответствовать всем правилам и ограничениям, включая ограничения целостности, каскады и триггеры. Изолированность - необходима для контроля над согласованностью и гарантирует базовую независимость каждой транзакции)

Индексация - для достижения высокой производительности SQL. Индекс ускоряет процесс запроса, предоставляя быстрый доступ к строкам в таблице.

Селективность - определяется процентом строк, имеющих одинаковое значение индексируемого столбца: чем выше, тем меньше селективность.

Выбор индексируемых столбцов определяется следующими соображениями:

· В первую очередь выбираются столбцы, которые часто встречаются в критериях поиска.

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

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

· Не индексируются столбцы, которые часто обновляются, т.к. команды обновления ведут к потере времени на обновление индекса.

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

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

ПОСТАНОВКА ЗАДАЧИ

Цель работы

Приобретение навыков работы с системами управления базами данных (СУБД). Изучить принципы организации и построения базы данных (БД). Выбрать предметную область и спроектировать БД. Разработать БД в среде Microsoft Access. Осуществить заполнение БД. Разработать SQL запросы к БД.

Постановка задачи

Ставится задача проектирования базы данных в СУБД Microsoft Access, разработка подсистемы безопасности, а также разработка программного обеспечения для созданной базы данных.

1.3. Вариант типового задания

Вариант 2: Спроектировать БД со сведениями о комнатных растениях.

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

Могут потребоваться следующие сведения:

• какой рекомендуемый водный режим у заданного растения летом;

• какие растения можно держать в комнате с северной стороны на окне;

• какие растения, цветущие в мае, неприхотливы к воде летом

• в какое время необходимо вносить заданную подкормку для указанного растения;

• когда необходимо пересадить указанное растение заданного возраста.

 

Возможны следующие изменения в БД:

• добавление информации о новом растении;

• отказ от старого типа подкормки;

• замена названия растения.

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

 

 

ОПРЕДЕЛЕНИЕ ТРЕБОВАНИЙ К ОПЕРАЦИОННОЙ ОБСТАНОВКЕ

Требования к установленному ПО

В результате проведенной оценки требования к ЭВМ следующие:

· Минимальное свободное мест на диске 16 ГБ

· ОС Windows 7 или выше (СУБД Access поддерживается только в Windows)

·  .NET Framework 4.5 и выше для запуска пользовательского интерфейса

ЗАКЛЮЧЕНИЕ

В процессе выполнения курсовой работы были приобретены навыки работы с системами управления базами данных (СУБД), изучены принципы организации и построения БД, а также язык SQL.

Была спроектирована и разработана база данных «Комнатные растения» в СУБД Microsoft Access 2016.

По итогу инфологического проектирования было создано 4 отношения, в последствии была произведена нормализация полученных таблиц базы данных к 3НФ в 6 отношений и полное заполнение БД.

К базе данных было добавлена подсистема безопасности в виде представлений и разделения прав пользователей.

Было создано программное обеспечение БД в виде Windows Forms на языке C# в среде разработки Visual Studio 2017. В данном ПО были добавлены все необходимые функции для работы, с помощью разработанных SQL запросов, такие как поиск по таблице, выдача отчётов и заполнение пользовательских представлений.

 

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Справка и обучение Microsoft Office. Интернет ресурс. (URL:  support.office.com/ru-ru)

2. Советов, Б.Я. Базы данных. Учебник: учебник для вузов / Б.Я. Советов, В.В. Цехановский, В.Д. Чертовской. – Юрайт: Профессиональное образование, 2017. – 463с. – Библиогр. в конце кн.

2. Смирнов Олег Игоревич. Базы данных: модели и проектирование: учеб. пособие / О. И. Смирнов; ТулГУ. – Тула: Изд-во ТулГУ, 2007. – 106 с.: ил. – в дар от каф. ПМиИТулГУТулГУ: 1308588-1308597. – Библиогр. в конце кн.

3. Семенчев Е.А. Распределенные и объектно-ориентированные базы данных: учеб. пособие / Е. А. Семенчев; ТулГУ. – Тула: Изд-во ТулГУ, 2008. – 136 с.: ил.

 

 

ПРИЛОЖЕНИЯ

Листинг

Подключение базы данных к пользовательскому интерфейсу

public partial class Form1: Form{

   public static string connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Plants.mdb;";

   private OleDbConnection DataBase;

   public Form1()

   {

       InitializeComponent();

       DataBase = new OleDbConnection(connect);

       DataBase.Open();

   }

Запросы для заполнения основных таблиц – Растения, Группы, Помещения, Подкормки, и дополнительной - Несветолюбивые растения для помещений

string query = "SELECT Растение.Номер, Растение.Народное_название, Растение.Общепринятое_название,Растение_Группа_Помещение.Группа,Растение.Время_цветения,Растение.Время_пересадки,Растение.Возраст,Растение_Группа_Помещение.Помещение FROM [Растение],[Растение_Группа_Помещение] WHERE Растение.Номер = Растение_Группа_Помещение.Растение";

string query2 = "SELECT * FROM [Группа]";

string query3 = "SELECT * FROM [Помещение]";

string query4 = "SELECT Растение.Номер, Растение.Народное_название, Подкормка.Тип_подкормки, Подкормка.Время_подкормки FROM [Растение], [Подкормка], [Растение_Подкормка] WHERE Растение.Номер = Растение_Подкормка.Растение AND Растение_Подкормка.Подкормка = Подкормка.Номер";

 string query5 = "SELECT Растение_Группа_Помещение.Растение, Растение.Народное_название,Растение_Группа_Помещение.Помещение FROM [Растение_Группа_Помещение],[Группа],[Растение] WHERE Растение.Номер = Растение_Группа_Помещение.Растение AND Группа.Название = Растение_Группа_Помещение.Группа AND Группа.Тип_освещения NOT LIKE '%Светолюбивые' ORDER BY Растение_Группа_Помещение.Растение";

Заполнение таблицы через отправленный запрос-строку

       // объект OleDbCommand для выполнения запроса к БД MS Access

       OleDbCommand command = new OleDbCommand(query, DataBase);

       OleDbDataReader reader = command.ExecuteReader();//для чтения табл результата запроса

       List<string[]> data = new List<string[]>();

       while (reader.Read()){

           data.Add(new string[8]);

           for (int i = 0; i < 8; i++)

               data[data.Count - 1][i] = reader[i].ToString();

       }

       foreach (string[] s in data) tablePlants.Rows.Add(s);

Запрос для поиска в таблице по введённому слову в поле textBox

string query = "SELECT Растение.Номер, Растение.Народное_название, Растение.Общепринятое_название, Растение_Группа_Помещение.Группа, Растение.Время_цветения, Растение.Время_пересадки, Растение.Возраст, Растение_Группа_Помещение.Помещение FROM [Растение], [Растение_Группа_Помещение] WHERE Растение.Номер = Растение_Группа_Помещение.Растение AND Растение.Народное_название LIKE '%"+textBox1.Text+"%'";

Запрос для поиска по таблице по 2 критериям, выбранным в comboBox

if (comboBox3.SelectedItem == "Прихотливы к поливу")

   query = "SELECT Растение.Народное_название, Растение_Группа_Помещение.Группа, Группа.Водный_режим, Растение.Время_цветения FROM [Растение], [Группа], Растение_Группа_Помещение WHERE Растение.Номер = Растение_Группа_Помещение.Растение AND Растение_Группа_Помещение.Группа=Группа.Название AND Группа.Водный_режим LIKE 'Частый полив'";

if (comboBox4.SelectedItem == "Цветение весной")

query += " AND (Растение.Время_цветения LIKE 'Круглогодично' OR Растение.Время_цветения LIKE '%есна%')";

 

Запрос для получения данных о выбранной в comboBox группе растений

string query = "SELECT Растение.Народное_название, Растение_Группа_Помещение.Группа, Группа.Водный_режим, Растение.Время_цветения FROM [Растение], [Группа], [Растение_Группа_Помещение] WHERE Растение.Номер = Растение_Группа_Помещение.Растение AND Растение_Группа_Помещение.Группа = Группа.Название AND Группа.Название LIKE '" + comboBox5.SelectedItem.ToString() + "'";

 

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

string plantGr = tablePlants.Rows[e.RowIndex].Cells[3].Value.ToString();

string query = "SELECT Группа.Водный_режим FROM Группа WHERE Группа.Название LIKE '" + plantGr + "'";

 

Метод для сохранения отчёта о растениях группы из заполненной таблицы

   private void Save2_Click_1(object sender, EventArgs e)

   {

       if (tableWater.Rows.Count == 0 || comboBox5.SelectedItem == null) return;  

       saveFileDialog1.FileName = "Отчёт о растениях группы " + comboBox5.SelectedItem.ToString();

       saveFileDialog1.Filter = "Текстовый файл (*.txt)|*.txt";

       if (saveFileDialog1.ShowDialog() == DialogResult.Cancel) return;

       string fileName = saveFileDialog1.FileName;

       string name, gr;

       string spr = "\t\t\t\t\t Отчёт о растениях группы " + comboBox5.SelectedItem.ToString() + "\r\n\r\n";

       spr += $"Кол-во растений в группе {comboBox5.SelectedItem.ToString()} = {tableWater.RowCount} \r\n\r\n";

spr+="\tНазвание_Растения\t|\tНазвание_группы\t\t|\tВодный_режим\t|\t Время_цветения\t|\r\n"; spr+="_________________________________________________________________________________________________________________\r\n";

       foreach (DataGridViewRow row in tableWater.Rows)

       {

           if (row.Cells[0].Value.ToString().Contains("\t")) name = row.Cells[0].Value.ToString();

           else name = "\t" + row.Cells[0].Value.ToString();

           if (row.Cells[0].Value.ToString().Length < 17) name += "\t";

           if (row.Cells[0].Value.ToString().Length < 9) name += "\t";

           if (row.Cells[1].Value.ToString().Length < 12) gr = row.Cells[1].Value.ToString() + "\t";

           else gr = row.Cells[1].Value.ToString();

                  spr+=$"{name}\t|\t{gr}\t|\t{row.Cells[2].Value.ToString()}\t|\t{row.Cells[3].Value.ToString()}\t\r\n";

        spr += "-----------------------------------------------------------------------------------------------------------------\r\n";

       }

       File.WriteAllText(fileName, spr);          

   }

 

СОДЕРЖАНИЕ

ВВЕДЕНИЕ. 3

1. ПОСТАНОВКА ЗАДАЧИ.. 5

1.1. Цель работы.. 5

1.2. Постановка задачи. 5

1.3. Вариант типового задания. 5

2. ИНФОЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ. 7

3. ОПРЕДЕЛЕНИЕ ТРЕБОВАНИЙ К ОПЕРАЦИОННОЙ ОБСТАНОВКЕ. 9

3.1. Оценка занимаемого объема данных. 9

3.2. Требования к установленному ПО.. 9

4. ВЫБОР СУБД И ИНСТРУМЕНТАЛЬНЫХ ПРОГРАММНЫХ СРЕДСТВ.. 10

5. ЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ БД.. 12

6. ФИЗИЧЕСКОЕ ПРОЕКТИРОВАНИЕ БД.. 15

7. РАЗРАБОТКА ПОДСИСТЕМЫ БЕЗОПАСНОСТИ.. 17

8. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.. 19

ЗАКЛЮЧЕНИЕ. 23

БИБЛИОГРАФИЧЕСКИЙ СПИСОК.. 24

ПРИЛОЖЕНИЯ.. 25

Листинг. 25

 

ВВЕДЕНИЕ

Реляционная база данных (БД) – это набор данных с предопределенными связями между ними. Эти данные организованны в виде набора таблиц, состоящих из столбцов и строк. В таблицах хранится информация об объектах, представленных в базе данных. В каждом столбце таблицы хранится определенный тип данных, в каждой ячейке – значение атрибута. Каждая стока таблицы представляет собой набор связанных значений, относящихся к одному объекту или сущности. Каждая строка в таблице может быть помечена уникальным идентификатором, называемым первичным ключом, а строки из таблиц могут быть связаны внешними ключами.

SQL (Structured Query Language) – основной интерфейс работы с реляционными БД. Стандарт ANSI SQL поддерживается всеми популярными ядрами реляционных БД. SQL используется для добавления, обновления и удаления строк данных, извлечения наборов данных для обработки транзакций.

Microsoft Office Access - реляционная система управления базами данных (СУБД) корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных.

Целостность данных – это полнота, точность и единообразие данных. Для поддержания целостности данных в реляционных БД используется ряд инструментов. В их число входят первичные ключи, внешние ключи, ограничения «Not NULL», «Unique», «Default» и «Check». Эти ограничения целостности позволяют применять практические правила к данным в таблицах.

Транзакция в БД – это один или несколько операторов SQL, выполненных в виде последовательности операций, представляющих собой единую логическую задачу. Транзакция представляет собой неделимое действие, то есть она должна быть выполнена как единое целое и либо должна быть записана в базу данных целиком, либо не должен быть записан ни один из ее компонентов. Для соблюдения целостности данных все транзакции в БД должны соответствовать требованиям ACID, то есть быть атомарными, единообразными, изолированными и надежными. (Атомарность – условие, при котором либо транзакция успешно выполняется целиком, либо, если какая-либо из ее частей не выполняется, вся транзакция отменяется. Единообразие – условие, при котором данные, записываемые в базу данных в рамках транзакции, должны соответствовать всем правилам и ограничениям, включая ограничения целостности, каскады и триггеры. Изолированность - необходима для контроля над согласованностью и гарантирует базовую независимость каждой транзакции)

Индексация - для достижения высокой производительности SQL. Индекс ускоряет процесс запроса, предоставляя быстрый доступ к строкам в таблице.

Селективность - определяется процентом строк, имеющих одинаковое значение индексируемого столбца: чем выше, тем меньше селективность.

Выбор индексируемых столбцов определяется следующими соображениями:

· В первую очередь выбираются столбцы, которые часто встречаются в критериях поиска.

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

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

· Не индексируются столбцы, которые часто обновляются, т.к. команды обновления ведут к потере времени на обновление индекса.

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

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

ПОСТАНОВКА ЗАДАЧИ

Цель работы

Приобретение навыков работы с системами управления базами данных (СУБД). Изучить принципы организации и построения базы данных (БД). Выбрать предметную область и спроектировать БД. Разработать БД в среде Microsoft Access. Осуществить заполнение БД. Разработать SQL запросы к БД.

Постановка задачи

Ставится задача проектирования базы данных в СУБД Microsoft Access, разработка подсистемы безопасности, а также разработка программного обеспечения для созданной базы данных.

1.3. Вариант типового задания

Вариант 2: Спроектировать БД со сведениями о комнатных растениях.

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

Могут потребоваться следующие сведения:

• какой рекомендуемый водный режим у заданного растения летом;

• какие растения можно держать в комнате с северной стороны на окне;

• какие растения, цветущие в мае, неприхотливы к воде летом

• в какое время необходимо вносить заданную подкормку для указанного растения;

• когда необходимо пересадить указанное растение заданного возраста.

 

Возможны следующие изменения в БД:

• добавление информации о новом растении;

• отказ от старого типа подкормки;

• замена названия растения.

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

 

 

ИНФОЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ

1. Выделим набор сущностей, отражающих предметную область и информационные потребности пользователей; в БД будут храниться сведения о растениях их подкормке, группе и помещениях для размещения, поэтому нужны такие сущности, как: РАСТЕНИЕ, ГРУППА, ПОМЕЩЕНИЕ и ПОДКОРМКА.

2. Определим атрибуты данных сущностей и выделим идентифицирующие: у сущности РАСТЕНИЕ ключевым атрибутом является Номер, а также необходимы следующие атрибуты: Народное название, Общепринятое название, Возраст,Время цветения и Время пересадки; у сущности ГРУППА ключевым атрибутом является Название, и необходимы следующие атрибуты: Водный режим, Тип почвы, Тип освещения; у сущности ПОМЕЩЕНИЕ ключевым атрибутом является Номер, а также необходимы следующие атрибуты: Тип, Кол-во мест на окне и Кол-во мест не на окне. у сущности ПОДКОРМКА ключевым атрибутом является Номер, и необходимы следующие атрибуты: Время подкормки, Тип подкормки.

3. Определим связи между данными сущностями:

· РАСТЕНИЕ обязательно находится в ПОМЕЩЕНИЕ, причем в одном помещении может быть много растений (или не быть вообще) (Связь (1,1): (0,N))

· РАСТЕНИЕ обязательно нуждается в ПОДКОРМКЕ, причем 1 подкормка обязательна и может подходить нескольким растениям (Связь (1, N): (0,N))

· РАСТЕНИЕ обязательно входит в ГРУППУ, причем в одной группе находится множество растений, либо ни одного, из-за удаления (Связь (1,1): (0,N))

4. Построим ER-диаграмму модели базы данных:

Рисунок 1 – ER-диаграмма

 

 

ОПРЕДЕЛЕНИЕ ТРЕБОВАНИЙ К ОПЕРАЦИОННОЙ ОБСТАНОВКЕ



Поделиться:


Последнее изменение этой страницы: 2021-04-20; просмотров: 325; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.186.173 (0.108 с.)