Основные требования к проектированию базы данных: ключевые аспекты и практические рекомендации

Список вопросов

1. Основные требования, предъявляемые к базе данных?
1) • d. контроль за целостностью данных
2) • e. все ответы
3) • c. распределенная обработка данных
4) • a. адаптивность и расширяемость
5) • b. восстановление данных после сбоев
2. База данных — это средство для …
1) • e. обработки информации
2) • d. сортировки данных
3) • c. хранения данных
4) • a. хранения, поиска и упорядочения данных
5) • b. поиска данных
3. Система управления базами данных (СУБД) — это?
1) • e. это совокупность программных средств, для создания файлов в БД
2) • d. это совокупность языковых и программных средств, предназначенных для создания, ведения и совместного использования БД многими пользователями
3) • c. состоит из совокупности файлов расположенных на одной машине
4) • b. это совокупность нескольких программ предназначенных для совместного использования БД многими пользователями
5) • a. это совокупность баз данных
4. Причинами низкой эффективности проектируемых БД могут быть:
1) • c. скорость работы программных средств
2) • d. скорость заполнения таблиц
3) • b. большая длительность процесса структурирования
4) • a. количество подготовленных документов
5. Как называется набор хранимых записей одного типа?
1) • e. физическая таблица базы данных
2) • d. логическая таблица базы данных
3) • c. ничего из вышеперечисленного
4) • b. представление базы данных
5) • a. хранимый файл
6. Структура файла реляционной базы данным (БД) меняется:
1) • e. при удалении диапазона записей;
2) • d. при добавлении одной или нескольких записей;
3) • a. при изменении любой записи;
4) • b. при уничтожении всех записей;
5) • c. при удалении любого поля.
7. Предположим, что некоторая база данных описывается следующим перечнем записей:
1 Иванов, 1956, 2400,
2 Сидоров, 1957, 5300,
3 Петров, 1956, 3600,
4 Козлов, 1952, 1200.
Какие из записей этой БД поменяются местами при сортировке по возрастанию, произведенной по первому полю:
1) • d. 1 и 4;
2) • e. 1 и З.
3) • a. 3 и 4;
4) • b. 2 и З;
5) • c. 2 и 4;
8. Перечислите преимущества централизованного подхода к хранению и управлению данными.
1) • e. все ответы
2) • d. сокращение противоречивости
3) • c. соглашение избыточности
4) • a. возможность общего доступа к данным
5) • b. поддержка целостности данных
9. Что обязательно должно входить в СУБД?
1) • d. система помощи
2) • b. командный интерфейс
3) • c. визуальная оболочка
4) • a. процессор языка запросов
10. Какая наименьшая единица хранения данных е БД?
1) • e. хранимый байт
2) • d. хранимая запись
3) • c. ничего из вышеперечисленного
4) • a. хранимое поле
5) • b. хранимый файл
11. Система управления базами данных представляет собой программный продукт, входящий в состав:
1) • e. систем программирования;
2) • d. системного программного обеспечения;
3) • c. уникального программного обеспечения;
4) • a. прикладного программного обеспечения.
5) • b. операционной системы;
12. Какой из вариантов не является функцией СУБД?
1) • e. координация проектирования, реализации и ведения БД
2) • d. защита и целостность данных
3) • c. поддержка моделей пользователя
4) • b. обеспечение пользователя языковыми средствами манипулирования данными
5) • a. реализация языков определения и манипулирования данными
13. Предположим, что некоторая база данных содержит поля ФАМИЛИЯ, ГОД РОЖДЕНИЯ, ДОХОД. При поиске по условию ГОД РОЖДЕНИЯ> 1958 AND ДОХОД
1) • e. имеющих доход менее 3500, и тех, кто родился в 1958 году;
2) • d. имеющих доход менее 3500, и родившихся в 1959 году и позже;
3) • c. имеющих доход менее 3500, и родившихся в 1958 году и позже;
4) • b. имеющих доход менее 3500, ипи тех, кто родился е 1958 году и позже;
5) • a. имеющих доход не менее 3500, и старше тех, кто родился в 1958 году.
14. В записи файла реляционной базы данных (БД) может содержаться:
1) • d. только логические величин;
2) • e. исключительно числовая информация;
3) • c. неоднородная информация (данные разных типов);
4) • b. только текстовая информация;
5) • a. исключительно однородная информация (данные толькр одного типа);
15. База данных — это:
1) • c. совокупность программ для хранения и обработки больших массивов информации;
2) • b. произвольный набор информации;
3) • a. специальным образом организованная и хранящаяся на внешнем носителе совокупность взаимосвязанных данных о некотором объекте;
4) • d. интерфейс, поддерживающий наполнение и манипулирование данными;
5) • e. компьютерная программа, позволяющая в некоторой предметной области делать выводы, сопоставимые с выводами человека-эксперта.

Список используемых источников

  • Лекция «Основные понятия баз данных и СУБД модели данных»: https://ppt-online.org/5753;
  • Принципы построения баз данных: https://infopedia.su/3x23d8.html;
  • Основные принципы построения баз данных, проблемы хранения больших объемов информации: https://www.sites.google.com/site/gosyvmkss12/bazy-dannyh/1-osnovnye-principy-postroenia-baz-dannyh-problemy-hranenia-bolsih-obemov-informacii;
  • Классификация баз данных: https://cs.petrsu.ru/studies/filatova_information/CMD_1996566_M/my_files/Inform/DataBase/a-2.htm.
  • Особенности восприятия времени у лиц с различным темпераментом
  • Творческое мышление и способы его активизации
  • Способы документирования и их развитие
  • Развитие ECM-технологий
  • Развитие ECM-технологий
  • СПОСОБЫ РЕАЛИЗАЦИИ И ДЕЙСТВИЕ АДМИНИСТРАТИВНО-ПРАВОВЫХ НОРМ ВО ВРЕМЕНИ, ПРОСТРАНСТВЕ И ПО КРУГУ ЛИЦ
  • Воинская преступность
  • Системы автоматизации управления документооборотом
  • Корыстная преступность
  • Управление коммуникациями проекта
  • Департамент правовых дисциплин
  • Основы административного права

Проектирование баз данных

Проектирование — самая трудная задача при работе с данными. Оно заключается не только в том, чтобы создать таблицу, указав наименование столбцов и тип данных. Это гораздо более сложный процесс, требующий специализированных знаний и умений. Говоря о типах баз данных в столбцах, подразумевается, например, способ их записи, который бывает символьный (строковый), числовой, календарный, NULL.

Основная сложность заключается в том, что мощность наших компьютеров ограничена. И пока данных мало, таблиц и строк тоже немного, поэтому машина обрабатывает информацию достаточно быстро. Но с течением времени информации становится всё больше, что может стать причиной снижения быстродействия. Работа машины будет замедляться, времени на обработку запросов потребуется всё больше. Добавить новую запись в таблицу не станет проблемой для реляционной СУБД, а вот выборка данных может превратиться в весьма ресурсоёмкую операцию. Хотя, многое будет зависеть и от настроек СУБД.

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

Требование Функциональные Нефункциональные Структура данных Целостность данных Безопасность данных Производительность Масштабируемость Доступность Управление данными
Определение Описание функций, которые должна выполнять база данных Описание требований, не связанных с функциональностью Описание структуры данных, используемых в базе данных Обеспечение целостности данных при их изменении Защита данных от несанкционированного доступа Обеспечение быстрой обработки запросов и манипуляций с данными Возможность расширения базы данных при увеличении объема данных Гарантированная доступность базы данных для пользователей Управление жизненным циклом данных, включая создание, изменение и удаление
Пример Добавление нового пользователя в базу данных Требование к производительности базы данных Использование таблицы для хранения информации о пользователях Проверка уникальности и правильности данных при добавлении пользователя Шифрование паролей пользователей для защиты от несанкционированного доступа Быстрый поиск и сортировка данных о пользователях Возможность добавления новых пользователей без ухудшения производительности Непрерывная доступность базы данных для пользователей Автоматическое резервное копирование данных и архивирование

Слайд 27Пример 1. необходимо создать БД «Сессия студентов факультета»перечень вопросов:1. Сколько студентов

учится?2. Сколько специальностей, курсов?3. Как распределены студенты по специальностям и

курсам?4. Сколько дисциплин читается на каждом курсе по каждой специальности?5. Как часто обновляется информация в базе данных?6. Сколько преподавателей?7. Какая преемственность существует между читаемыми дисциплинами?8. Сколько лекционных аудиторий и аудиторий для проведения практических за­нятий, лабораторий?9. Как информация, представленная в п.п. 1-8, используется в настоящее время (расписание занятий, экзаменов, зачетов и т.д.) и как ее собираются использовать?10. Сколько раз в день, сколько человек и кто пользуются БД?

Требования к производительности

Отклик системы

Система должна обеспечивать быстрый отклик на запросы пользователей. Это означает, что время, затраченное на обработку запроса и возвращение результата, должно быть минимальным. Низкий отклик системы повышает удовлетворенность пользователей и обеспечивает эффективное использование базы данных.

Пропускная способность

Система должна иметь достаточную пропускную способность для обработки большого количества запросов одновременно

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

Время выполнения запросов

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

Оптимизация запросов

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

Масштабируемость

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

Оптимизация хранения данных

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

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

Классификация баз данных

По типу хранимой информации БД делятся на:

  • документальные,
  • фактографические и
  • лексикографические.

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

К лексикографическим базам данных относятся различные словари (классификаторы, многоязычные словари, словари основ слов и т. п.).

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

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

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

По характеру организации хранения данных и обращения к ним различают

  • локальные (персональные),
  • общие (интегрированные, централизованные) и
  • распределенные базы данных.

Персональная база данных — это база данных, предназначенная для локального использования одним пользователем. Локальные БД могут создаваться каждым пользователем самостоятельно, а могут извлекаться из общей БД.

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

На рисунке 1 показана схема классификации БД по характеру организации хранения данных и обращения к ним:

Избыточность данных

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

Таблица 6.1. Отношение СТУДЕНТ

Номзачкн ФИОстудента Кодгруппы ФИО_старосты Куратор
20-Т-201 Иванов С.И. 20-Т-11 Рябов В.С. Доц. Фок И.И.
20-Т-215 Петров Я.Р. 20-Т-12 Сизов М.М. Доц. Докин С.С.
20-Т-217 Рябов В.С 20-Т-11 Рябов В.С. Доц. Фок И.И.
20-Т-211 Сенова А.Л. 20-Т-11 Рябов В.С. Доц. Фок И.И.

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

Виды аномалий данных

Различают три вида аномалий в базе данных:

  • аномалии включения;
  • аномалии удаления;
  • аномалии модификации.

Аномалии включенияВ приведенном выше отношении аномалии включения возникаютпри попытке создать новую группу и ввести ее в отношение при томусловии, что в нее еще не зачислен ни один студент. Ввод такойинформации в подобной ситуации требует присвоения значения NULLвсем атрибутам описания студента, в том числе и атрибуту Номзачкн,который является первичным ключом данного отношения. Но реализациятакой попытки приведет к нарушению категорней целостности, а значит,система ее обязана отклонить.Результатом анализа является вывод о том, что в отношении табл. 6.1присутствуют аномалии включения, а, следовательно, это отношениедолжно быть преобразовано таким образом, чтобы от них избавиться.Структура отношений, содержащая ту же информацию, что иотношение СТУДЕНТ, но лишенная аномалий включения, представлена втабл. 6.2 и 6.3.

Таблица 6.2 Отношение СТУДЕНТНом.зач.кн. ФИОстудента Кодгруппы20-Т-201 Иванов С.И. 20-Т-1120-Т-215 Петров Я.Р. 20-Т-1220-Т-217 Рябов В.С. 20-Т-1120-Т-211 Сенова А.Л. 20-Т-11

Таблица 6.3 Отношение ГРУППАКодгруппы ФИОстаросты Куратор20-Т-11 Рябов В.С. Доц. Фок И.И.20-Т-12 Сизов М.М. Доц. Докин С.С.

Аномалии удаленияВернемся к анализу отношения, представленного в табл. 6.1. Приудалении из этого отношения кортежа:20-Т-215 Петров Я.P. 20-T-12 Сизов М.М. Доц. Докин С.С.из базы данных будут удалены все сведения о группе 20-Т-12. Такаяситуация представляет собой аномалию удаления.Для исключения из базы данных аномалии удаления это отношениедолжно быть преобразовано. Причем преобразования должны бытьпроведены точно такие же, какие были проведены для исключенияаномалии включения.

Аномалии модификацииТакая аномалия возникает при попытке изменить что-либокасающееся сведений о группе обучения студента. Допустим, что в группе20-Т-11 решили назначить нового старосту, например, Сенову А.Л.В такой ситуации необходимо просмотреть все кортежи отношения ив каждом кортеже значение атрибута ФИОстаросты заменить Рябов В.С. на Сенова А.Л. Появление аномалии модификации можно заблокировать, если опять же прибегнуть к преобразованию отношения из табл. 6.1. Эти преобразования точно такие же, которые были использованы для исключения аномалий включения и удаления. Действительно, смена старосты группы требует изменения значения атрибута ФИОстаростытолько в одном кортеже отношения табл. 6.3.

Требования к управлению данными

Хранение данных

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

Индексирование данных

СУБД должна предоставлять механизмы индексирования данных для ускорения поиска и сортировки. Индексы позволяют быстро находить нужные данные, уменьшая время выполнения запросов.

Транзакционность

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

Резервное копирование и восстановление

СУБД должна предоставлять механизмы резервного копирования и восстановления данных. Резервное копирование позволяет создавать резервные копии базы данных для защиты от потери данных. Восстановление данных позволяет восстановить базу данных из резервной копии в случае сбоя или потери данных.

Архивирование данных

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

Управление доступом

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

Оптимизация запросов

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

Масштабируемость

СУБД должна обеспечивать возможность масштабирования данных и производительности. Это включает в себя возможность добавления новых серверов или увеличения ресурсов существующих серверов для обработки большего объема данных или увеличения нагрузки.

Мониторинг и анализ

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

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

Слайд 38 Схема обработки запроса на выборку данных из БДприкладная

данных запрос на чтение необходимых данных, содержащихся в базеСУБД отыскивает

описание затребованных данных в структуре описания данных прикладного уровня (внешняя модель)

СУБД по глобальному описанию БД (концептуальная схема) определяет необходимые данные на логическом уровне

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

СУБД через подсистему управления потоками данных выдает операционной системе запрос на чтение хранимой записи

подсистема управления вводом-выводом операционной системы осуществляет физическое чтение записи в системный буфер ОС

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

Особенности реляционных данных

Главная особенность — все объекты хранятся в виде набора 2-мерных таблиц. Каждая таблица включает в себя набор столбцов, где указываются следующие параметры:
— название;
— тип данных (число, строка и т. д.).

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

По большему счёту, БД — это абстрактное понятие, а в случае с реляционной структурой таблица — есть не более чем удобный способ хранения информации. Причём набор таблиц превращается в базу данных тогда, когда он связан логически. А чтобы этим всем управлять, используют СУБД. Классический пример СУБД — система управления MySQL. Иными словами, СУБД MySQL — есть программное воплощение математических идей.

Функциональные требования

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

Примеры функциональных требований:

1. Создание и удаление записей: Пользователь должен иметь возможность создавать новые записи в базе данных и удалять существующие записи.

2. Чтение и обновление данных: Пользователь должен иметь возможность читать данные из базы данных и обновлять их при необходимости.

3. Поиск и фильтрация данных: Пользователь должен иметь возможность выполнять поиск и фильтрацию данных в базе данных на основе определенных критериев.

4. Сортировка данных: Пользователь должен иметь возможность сортировать данные в базе данных по определенным полям или критериям.

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

6. Управление пользователями и правами доступа: Пользователь должен иметь возможность управлять пользователями и их правами доступа к базе данных.

7. Импорт и экспорт данных: Пользователь должен иметь возможность импортировать данные из внешних источников или экспортировать данные из базы данных в другие форматы.

8. Автоматическое уведомление: Пользователь должен иметь возможность настроить автоматическое уведомление о определенных событиях или изменениях в базе данных.

9. Интеграция с другими системами: Пользователь должен иметь возможность интегрировать базу данных с другими системами, такими как CRM или ERP системы.

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

Слайд 26Пример 1. необходимо создать БД «Сессия студентов факультета» БД должна:хранить в течение

всего времени обучения студента персональную информацию о каждом студенте, успеваемости

по каждому предмету и распределении студентов по группам;выводить в удобной форме данные по следующим запросам пользователя:поиск заданного студента по фамилии или номеру зачетной книжки;выборка всех данных об успеваемости заданного студента за текущий учебный год и за все время обучения;выборка всех неуспевающих студентов;средний балл по каждому предмету;расчет количества студентов по группам;средняя оценка по предметам и группам.3.автоматизировать обработку информации при следующих бизнес- операциях:прием нового студента;коррекция данных о студенте и его успеваемости;формирование личной ведомости успеваемости;4.выводить следующие документы на печать:ведомость средней успеваемости факультета;список студентов по группам;ведомость успеваемости студентов по группам и предметам.

Требования к структуре данных

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

Типы данных

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

Определение правильных типов данных важно для обеспечения правильного хранения и обработки данных

Структура таблиц

Требования к структуре таблиц определяют, какие таблицы должны быть созданы в базе данных и какие столбцы должны быть в каждой таблице. Например, для базы данных о студентах может быть создана таблица “Студенты” с колонками “Имя”, “Фамилия”, “Возраст” и т.д. Определение правильной структуры таблиц позволяет эффективно хранить и организовывать данные.

Отношения между таблицами

Требования к отношениям между таблицами определяют, какие связи должны быть установлены между таблицами в базе данных. Например, в базе данных о студентах может быть установлена связь между таблицами “Студенты” и “Курсы”, чтобы отслеживать, какие курсы каждый студент посещает. Определение правильных отношений между таблицами позволяет эффективно связывать данные и извлекать информацию из них.

Индексы

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

Ограничения целостности

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

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

Понравилась статья? Поделиться с друзьями:
Центр образования
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: