Создание базы данных mysql от а до я
Содержание:
- Коротко главное
- Составные типы
- Что такое язык SQL
- Иерархические
- Настройка прав доступа
- Общая система типов
- А покажите сами запросы
- Коротко главное
- Что дальше
- Хранение ссылок на объекты
- Требования к проектированию БД
- Реляционные
- Создание связей между сущностями
- Стоит ли его изучать
- Как работают связи в базе данных
- Особенности реляционных данных
- Как сделать базу знаний полезной?
- CUBRID
Коротко главное
- MySQL — система управления реляционными базами данных. Реляционными — то есть такими, между которыми есть однозначные прописанные связи. Можно представить, что это система управления табличными базами данных.
- Таблицы могут быть связаны между собой, чтобы можно было проще найти нужную информацию.
- Для работы с реляционными БД используют специальный язык — SQL.
- Каждая команда в SQL — это запрос к базе, чтобы она что-то нашла, изменила, добавила или удалила у себя.
- MySQL используют уже 25 лет, поэтому это проверенная и надёжная база данных. Кто любит MySQL, тому легко ориентироваться в технологиях современного веба.
Составные типы
Существенной возможностью модели данных, которая поддерживается «1С:Предприятием 8», является то, что для поля базы данных можно определить сразу несколько типов данных, значения которых могут храниться в этом поле. При этом значение в каждый момент времени будет храниться одно, но оно может быть разных типов — как ссылочных, так и примитивных — число, строка, дата и т.п.:
Такая возможность очень важна для экономических задач — например, в расходной накладной в качестве покупателя может быть указано либо юридическое лицо из справочника организаций, либо физическое лицо из справочника частных лиц. Соответственно, при проектировании базы данных разработчик может определить поле, которое будет хранить значение любого из этих типов.
Что такое язык SQL
Чтобы работать с реляционной базой данных, нужно знать специальный язык запросов — SQL. Это расшифровывается как structured query language — язык структурированных запросов. «Структурированный» означает, что каждый запрос должен иметь определённую структуру, чтобы база поняла, как на него реагировать.
Сами запросы вводятся в специальном терминале, который отвечает за управление базой данных.
С помощью запросов можно делать что угодно:
- создавать и изменять таблицы,
- настраивать связи между ними,
- вносить и удалять данные,
- настраивать доступ для разных пользователей,
- а главное — искать то, что нужно, по любым параметрам.
Если вы знаете SQL, то можете работать с любой реляционной базой данных, которые его поддерживают.
Иерархические
Иерархия — это когда есть вышестоящий, а есть его подчинённые, кто ниже. У них могут быть свои подчинённые и так далее. Мы уже касались такой модели, когда говорили про деревья и бустинг.
В такой базе данных сразу видно, к чему относятся записи, где они лежат и как до них добраться. Самый простой пример такой базы данных — хранение файлов и папок на компьютере:
Видно, что на диске C: есть много папок: Dropbox, eSupport, GDrive и все те, которые не поместились на экране.
Внутри папки GDrive есть ###_Inbox и #_Альбатрос, а внутри #_Альбатроса — десятки других папок. Если мы посмотрим на скриншот, то увидим, то должностная инструкция бухгалтера лежит с остальными файлами внутри папки Должностные и охрана труда, которая лежит внутри папки Инструкции.
Иерархическая база данных знает, кто кому подчиняется, и поэтому может быстро находить нужную информацию. Но такие базы можно организовать только в том случае, когда у вас есть чёткое разделение в данных, что главнее, а что ему подчиняется.
Настройка прав доступа
Чтобы к созданной базе можно было подключиться, добавим пользователя:
> GRANT ALL PRIVILEGES ON newdb.* TO dbuser@localhost IDENTIFIED BY ‘password’ WITH GRANT OPTION;
* где newdb.* — наша база и все ее таблицы; dbuser@localhost — имя учетной записи, которая будет подключаться с локального сервера; password — придуманный нами пароль.** В данном примере, учетной записи будут предоставлены полные права (ALL PRIVILEGES). Подробнее о правах в MySQL читайте статью Как создать пользователя MySQL и дать ему права.
Посмотреть список пользователей, которые имеют доступ к базе можно командой:
> SELECT db, host, user FROM mysql.db WHERE db=’newdb’;
* в данном примере мы выведем учетные записи, которым был дан прямой доступ к созданной нами базе. В данном списке не будут отражены пользователи с глобальными правами (например, root).
Поменять пароль пользователю можно одной из команд (в зависимости от версии СУБД):
> SET PASSWORD FOR ‘dbuser’@’localhost’ = PASSWORD(‘new_password’);
> ALTER USER ‘dbuser’@’localhost’ IDENTIFIED BY ‘new_password’;
> UPDATE mysql.user SET Password=PASSWORD(‘new_password’) WHERE USER=’dbuser’ AND Host=’localhost’;
* все 3 команды меняют пароль для пользователя dbuser@localhost на новый — new_password.
При необходимости, удалить пользователя можно командами:
> REVOKE ALL PRIVILEGES, GRANT OPTION FROM ‘dbuser’@’localhost’;
> DROP USER ‘dbuser’@’localhost’;
* первая команда отнимает все привилегии, выданные пользователю. Вторая удаляет самого пользователя.
Общая система типов
Важной особенностью работы с базой данных является то, что в «1С:Предприятии 8» реализована общая система типов языка и полей баз данных. Иными словами, разработчик одинаковым образом определяет поля базы данных и переменные встроенного языка и одинаковым образом работает с ними.. Этим система «1С:Предприятие 8» выгодно отличается от универсальных инструментальных средств
Обычно, при создании бизнес-приложений с использованием универсальных сред разработки, используются отдельно поставляемые системы управления базами данных. А это значит, что разработчику приходится постоянно заботиться о преобразованиях между типами данных, поддерживаемыми той или иной системы управления базами данных, и типами, поддерживаемыми языком программирования.
Этим система «1С:Предприятие 8» выгодно отличается от универсальных инструментальных средств. Обычно, при создании бизнес-приложений с использованием универсальных сред разработки, используются отдельно поставляемые системы управления базами данных. А это значит, что разработчику приходится постоянно заботиться о преобразованиях между типами данных, поддерживаемыми той или иной системы управления базами данных, и типами, поддерживаемыми языком программирования.
А покажите сами запросы
А пожалуйста.
Создадим базу данных THECODE_MEDIA:
Скажем, что будем дальше работать именно с этой базой:
Создадим таблицу с названиями статей, авторами и количеством прочтений за месяц:
Загрузим в таблицу уже готовые данные из файла:
А теперь выведем их на экран:
Команд в SQL настолько много, что нам понадобится отдельная статья для практики. Сделаем для этого отдельный проект, на котором покажем, как MySQL работает с запросами и таблицами.
Работа с MySQL через запросы в терминале
Коротко главное
- MySQL — система управления реляционными базами данных. Реляционными — то есть такими, между которыми есть однозначные прописанные связи. Можно представить, что это система управления табличными базами данных.
- Таблицы могут быть связаны между собой, чтобы можно было проще найти нужную информацию.
- Для работы с реляционными БД используют специальный язык — SQL.
- Каждая команда в SQL — это запрос к базе, чтобы она что-то нашла, изменила, добавила или удалила у себя.
- MySQL используют уже 25 лет, поэтому это проверенная и надёжная база данных. Кто любит MySQL, тому легко ориентироваться в технологиях современного веба.
Что дальше
На очереди — нереляционные базы и NoSQL. Там вообще всё не так, как здесь, поэтому разбирать будем отдельно.
Текст и иллюстрации
Миша Полянин
Редактор
Максим Ильяхов
Корректор
Ира Михеева
Иллюстратор
Даня Берковский
Вёрстка
Маша Дронова
Хранение ссылок на объекты
При манипулировании данными, хранящимися в базе данных «1С:Предприятия 8», зачастую используется объектный подход. Это значит, что обращение (чтение и запись) к некоторой совокупности данных, хранящихся в базе, происходит как к единому целому. Например, используя объектную технику, можно манипулировать данными справочников, документов, планов видов характеристик, планов счетов и т.д.
Характерной особенностью объектного манипулирования данными является то, что на каждый объект, как совокупность данных, существует уникальная ссылка, позволяющая однозначно идентифицировать этот объект в базе данных.
Эта ссылка также хранится в поле базы данных, вместе с остальными данными объекта. Кроме того, ссылка может быть использована как значение какого-либо поля другого объекта. Например, ссылка на объект справочника Контрагенты может быть использована как значение соответствующего реквизита документа Приходная накладная.
Требования к проектированию БД
О видах и особенностях реляционных БД мы уже поговорили. Теперь давайте подробнее обсудим сложности их проектирования. В данном случае этот процесс начинается с постановки задач, исходя из нужных требований, особенностей использования, недостатков либо достоинств той либо иной системы управления. В случае с СУБД MySQL необходимо правильно составить общую структуру.
Требования обычно следующие:1. База данных должна быть относительно простой в плане обработки информации.2. Она должна быть максимально компактной и неизбыточной настолько, насколько это возможно без ущерба для функциональности.
Возможны и другие требования, причём нередко они противоречат друг другу
Именно поэтому важно найти оптимальный баланс с точки зрения архитектуры, учитывая назначение конечного продукта
Так как проектирование — важнейший процесс, им занимается проектировщик. Обычно к работе привлекают профессиональных администраторов серверов либо архитекторов БД, имеющих большой практический опыт. Нужно четко понимать, что проектируется и какие результаты должны получиться на выходе. Это бывает непросто, так как, если речь идёт о серьёзных проектах, готовая структура может включать в себя десятки и сотни таблиц, которые бывают связаны друг с другом как простыми, так и замысловатыми способами.
Результат проектирования — диаграмма или схема. Это подробное схематическое описание, в котором указываются, какие данные будут храниться, сколько столбцов в таблице, тип столбцов в таблице, как связаны таблицы между собой и многое другое. При правильном и грамотном проектировании система будет работать стабильно и без сбоев. В обратном случае ожидайте проблем, так как нет ничего хуже, чем ошибиться на этапе построения архитектуры проекта.
Если вы хотите овладеть базами данных на высоком профессиональном уровне, записывайтесь на соответствующий курс в OTUS. Практикующие эксперты научат вас особенностям управления БД и тому, как эффективно взаимодействовать с любой реляционной СУБД, используя для этого язык структурированных запросов SQL.
Реляционные
Реляционные базы данных ещё называют табличными, потому что все данные в них можно представить в виде разных таблиц. Одни таблицы связаны с другими, а другие — с третьими. Например, база данных покупок в магазине может выглядеть так:
Смотрите, у магазина есть две таблицы — с товарами и покупателями. Но когда один из них что-то покупает, то данные попадают в третью таблицу. В ней есть своя информация (количество купленных товаров) и ссылки на покупателя и сам товар. Если нужно, можно по этим связям попасть в нужную таблицу и узнать подробности о той или другой записи.
Если у покупателя поменяется номер телефона, то нам достаточно будет поменять это в одной таблице «Клиенты». Благодаря тому, что в «Покупки» записывается только код покупателя, нам не нужно менять имя больше нигде — данные сами обновятся автоматически, когда мы захотим посмотреть, кто именно купил табурет.
Создание связей между сущностями
Теперь, когда данные преобразованы в таблицы, нужно проанализировать связи между ними. Сложность базы данных определяется количеством элементов, взаимодействующих между двумя связанными таблицами. Определение сложности помогает убедиться, что вы разделили данные на таблицы наиболее эффективно.
Каждый объект может быть взаимосвязан с другим с помощью одного из трех типов связи:
Связь «один-к одному»
Когда существует только один экземпляр объекта A для каждого экземпляра объекта B, говорят, что между ними существует связь «один-к одному» (часто обозначается 1:1). Можно указать этот тип связи в ER-диаграмме линией с тире на каждом конце:
Если при проектировании и разработке баз данных у вас нет оснований разделять эти данные, связь 1:1 обычно указывает на то, что в лучше объединить эти таблицы в одну.
Но при определенных обстоятельствах целесообразнее создавать таблицы со связями 1:1. Если есть поле с необязательными данными, например «описание», которое не заполнено для многих записей, можно переместить все описания в отдельную таблицу, исключая пустые поля и улучшая производительность базы данных.
Чтобы гарантировать, что данные соотносятся правильно, в нужно будет включить, по крайней мере, один идентичный столбец в каждой таблице. Скорее всего, это будет первичный ключ.
Связь «один-ко-многим»
Эта связи возникают, когда запись в одной таблице связана с несколькими записями в другой. Например, один клиент мог разместить много заказов, или у читателя может быть сразу несколько книг, взятых в библиотеке. Связи «один- ко-многим» (1:M) обозначаются так называемой «меткой ноги вороны», как в этом примере:
Чтобы реализовать связь 1:M, добавьте первичный ключ из «одной» таблицы в качестве атрибута в другую таблицу. Если первичный ключ таким образом указан в другой таблице, он называется внешним ключом. Таблица со стороны связи «1» представляет собой родительскую таблицу для дочерней таблицы на другой стороне.
Связь «многие-ко-многим»
Когда несколько объектов таблицы могут быть связаны с несколькими объектами другой. Говорят, что они имеют связь «многие-ко-многим» (M:N). Например, в случае студентов и курсов, поскольку студент может посещать много курсов, и каждый курс могут посещать много студентов.
На ER-диаграмме эти связи отображаются с помощью следующих строк:
При проектировании структуры базы данных реализовать такого рода связи невозможно. Вместо этого нужно разбить их на две связи «один-ко-многим».
Для этого нужно создать между этими двумя таблицами новую сущность. Если между продажами и продуктами существует связь M:N, можно назвать этот новый объект «sold_products», так как он будет содержать данные для каждой продажи. И таблица продаж, и таблица товаров будут иметь связь 1:M с sold_products. Этот вид промежуточного объекта в различных моделях называется таблицей ссылок, ассоциативным объектом или таблицей связей.
Каждая запись в таблице связей будет соответствовать двум сущностям из соседних таблиц. Например, таблица связей между студентами и курсами может выглядеть следующим образом:
Обязательно или нет?
Другим способом анализа связей является рассмотрение того, какая сторона связи должна существовать, чтобы существовала другая. Необязательная сторона может быть отмечена кружком на линии. Например, страна должна существовать для того, чтобы иметь представителя в Организации Объединенных Наций, а не наоборот:
Два объекта могут быть взаимозависимыми (один не может существовать без другого).
Рекурсивные связи
Иногда при проектировании базы данных таблица указывает на себя саму. Например, таблица сотрудников может иметь атрибут «руководитель», который ссылается на другое лицо в этой же таблице. Это называется рекурсивными связями.
Лишние связи
Лишние связи — это те, которые выражены более одного раза
Как правило, можно удалить одну из таких связей без потери какой-либо важной информации. Например, если объект «ученики» имеет прямую связь с другим объектом, называемым «учителя», но также имеет косвенные отношения с учителями через «предметы», нужно удалить связь между «учениками» и «учителями»
Так как единственный способ, которым ученикам назначают учителей — это предметы.
Стоит ли его изучать
Чем полезно знание этого языка? Скажу вам так, если вы знаете его и умеете пользоваться БД, то можете достичь невероятной скорости поиска нужной информации, избежать проблем с параллельным доступом, то есть вам будет совершенно все равно, когда несколько людей захочет поискать что-то одно.
Решать вам стоит ли срочно хвататься за книги. Если вы хотите научиться создавать мощные проекты с огромным бюджетом и потому по всем правилам, то да, тем более, что это не займет так уж много времени. Особенно если сравнивать с силами.
Могу предложить вам две книги для изучения языка. «SQL за 10 минут» Бена Форта. Учебник с краткой информацией и конкретными примерами. Напрягать мозг придется минимально, особенно если у вас уже есть какие-то знания, то это лучший вариант.
Второй учебник более основателен. Называется «SQL для чайников» от Аллена Тейлора. Создан он в лучших традициях издательства «Вильямс». Многим знакома эта серия хотя бы внешне. Что могу сказать о содержании? Все очень скрупулезно описано, не сомневаюсь, что поймет даже не слишком усидчивый ученик.
Ну вот и все. Теперь вы знаете что делать дальше. Подписывайтесь на рассылку и узнавайте больше о мире интернета. До новых встреч и простоты в изучении.
Как работают связи в базе данных
Связи между таблицами показывают, как одни данные могут зависеть от других. В зависимости от того, как вы настроите связи, база может получать разные результаты и искать данные. В связи может участвовать одна запись, а может сразу много.
Один к одному. Это самый простой вид связи, который говорит: одной записи из этой таблицы соответствует только одна запись из другой таблицы. Если мы сделаем новую таблицу с фотографиями клиентов, то каждой фотографии будет соответствовать только один клиент и наоборот.
Один ко многим. Когда у нас есть таблица с клиентами и таблица с их покупками, тут работает связь «один ко многим». Это значит, что у нас одной записи о клиенте соответствует несколько записей об их покупках, например, если он их сделал в разное время. Благодаря этой связи мы можем вывести все покупки для каждого клиента в отдельности.
Ещё пример — художники и картины. Каждая картина принадлежит только одному художнику, но одному художнику может принадлежать много разных картин.
Многие ко многим. А вот это хитрая связь — для неё нужна отдельная таблица. Смысл такой: мы делаем промежуточную таблицу, в которой соединяем данные из одной таблицы с данными из другой. Получается, что в новой таблице как бы нет данных — в ней только связи.
Допустим, вы ведёте свой список дел в ежедневнике, где можно ставить метки для дел. Метки помогают понять, что за дело перед вами, и выглядят примерно так: «в дороге», «позвонить», «на неделе», «подписать у Иваныча» и «за компьютером». Их можно назначить любой задаче — одну метку, две или все сразу. Получается так:
- одна метка может стоять на множестве разных задач
- у одной задачи может быть много разных меток.
Это значит, что мы связали множество меток со множеством задач и теперь можем искать одно через другое.
Особенности реляционных данных
Главная особенность — все объекты хранятся в виде набора 2-мерных таблиц. Каждая таблица включает в себя набор столбцов, где указываются следующие параметры:- название;- тип данных (число, строка и т. д.).
Вторая важная особенность заключается в том, что число столбцов фиксировано. Это значит, что структура БД известна заранее, при этом количество рядов либо строк данных практически не ограничено. Грубо говоря, строки в реляционных БД — есть объекты, хранимые в базе.
По большему счёту, БД — это абстрактное понятие, а в случае с реляционной структурой таблица — есть не более чем удобный способ хранения информации. Причём набор таблиц превращается в базу данных тогда, когда он связан логически. А чтобы этим всем управлять, используют СУБД. Классический пример СУБД — система управления MySQL. Иными словами, СУБД MySQL — есть программное воплощение математических идей.
Как сделать базу знаний полезной?
Пишите просто!
Старайтесь не усложнять текст. Представьте, что вашу инструкцию читает человек, который впервые столкнулся с тем, о чём вы пишете. Поймёт ли он вас? Можно даже провести эксперимент: дать прочитать черновик статьи непосвящённому человеку (пусть это будет мама, жена или ваш друг) и попросить дать обратную связь. Всегда ориентируйтесь на пользователя-новичка, поскольку продвинутый пользователь в любом случае вас поймёт.
Не скупитесь на картинки и видео
На одной картинке или схеме порой можно наглядно показать то, что вы будете описывать в нескольких абзацах текста. Если есть возможность записать видеоинструкцию — замечательно! В REG.RU у нас есть целая серия видеороликов по самым популярным вопросам. Вот пример одного из них:
Сделайте очевидным переход в базу знаний
Никакая, даже самая полезная информация ничего не стоит, если её невозможно найти. Подумайте, где лучше всего разместить ссылку на справочный раздел. Это может быть главное меню или иконка на всех страницах сайта. На сайте REG.RU при клике на иконку «Помощь» появляется меню со всеми способами связи с поддержкой:
Продумайте навигацию
Простая и интуитивно понятная навигация по базе знаний поможет сэкономить пользователям время на поиск нужной информации. Лучше всего разделить все статьи по тематическим категориям:
Важно также, чтобы пользователь мог беспрепятственно вернуться туда, откуда он пришёл. В этом может помочь древовидная структура разделов или так называемые хлебные крошки на каждой странице:
Добавьте поиск по статьям
Поиск — незаменимая вещь, если в вашей базе знаний много статей. В разделе «Помощь» на сайте REG.RU более 700 статей на различные темы, поэтому без качественного поиска никак не обойтись. Наши алгоритмы ищут релевантные страницы по поисковым запросам с учётом синонимов и опечаток.
Разместите ссылки на актуальные статьи на других страницах сайта
Недостаточно просто «положить» в меню ссылку на раздел с базой знаний. Какие-то статьи могут помочь решить вопрос здесь и сейчас, если грамотно разместить ссылки на них на других страницах сайта. К примеру, есть промостраница заказа услуги. Добавьте на неё ответы на часто задаваемые вопросы или дайте ссылку на статью, в которой будет подробно описан процесс заказа и работы с услугой.
Разместите в конце каждой статьи форму для сбора обратной связи от пользователей. Это могут быть комментарии, лайки, звёзды или простой вопрос: «Помогла ли вам статья?».
Мы ежедневно просматриваем все негативные комментарии и улучшаем наши статьи с учётом полученного фидбека. Если не хватает какой-то информации — добавляем её, если что-то стало неактуальным — обновляем. Это непрерывный процесс совершенствования, в котором нам очень помогают наши клиенты.
Держите базу знаний в актуальном состоянии
Этот пункт последний в списке, но не последний по значимости. Бизнес постоянно развивается и растёт. Появляются новые услуги и сервисы. Меняется интерфейс и путь пользователя
Поэтому очень важно постоянно обновлять базу знаний. Попробуйте настроить взаимодействие между командой, работающей над продуктом, и командой, поддерживающей базу знаний, так, чтобы копирайтеры всегда вовремя узнавали обо всех нововведениях
Поощряйте инициативу других служб, если они сообщают о том, что в базе знаний появилась устаревшая информация.
⌘⌘⌘
Итак, хорошая база знаний может стать альтернативным каналом поддержки ваших клиентов. По нашему опыту, только 20% пользователей, посетивших раздел «Помощь» на сайте REG.RU, нуждаются в дополнительной консультации и идут писать заявку в поддержку. Поэтому мы рекомендуем создавать и развивать свою базу знаний. Поверьте, это выгодно.
А если у вас пока нет своего онлайн-бизнеса или проекта, это легко исправить с сервисом REG.Site, где не требуются навыки разработки или программирования.
CUBRID
Бесплатная программа для создания базы данных с открытым исходным кодом, оптимизированная специально для веб-приложений. Данный сервис предназначен для обработки больших объемов данных и генерации многочисленных параллельных запросов. Это решение реализовано на языке программирования C.
Достоинства
- Множественная степень дробления блокировок;
- Создание резервных копий онлайн;
- Инструменты GUI и драйверы для JDBC, PHP, Python, Perl и Ruby;
- Поддержка встроенного сегментирования базы данных для масштабирования;
- В крупных системах данные разделяются по нескольким экземплярам базы данных;
- Репликация полнотекстовых баз данных и согласованность транзакций.
Недостатки
- Не работает в системах Apple;
- Нет отладчика сценариев;
- Руководство доступно только на английском и корейском языках;
- Обсуждения на официальном форуме, как правило, устаревшие (большинству из них несколько лет).