Схема базы данных - это абстрактный дизайн, представляющий хранение ваших данных в базе данных. Изучите основы схем баз данных на общих примерах: PostgreSQL, NoSQL и MySQL.

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

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

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

Сегодня мы рассмотрим:

  • Что такое схемы базы данных?
  • Типы схемы базы данных
  • Пример NoSQL
  • Пример SQL-сервера
  • Пример PostgreSQL
  • Что учить дальше

Что такое схемы базы данных?

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

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

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

Схема базы данных будет включать:

  • Все важные или актуальные данные
  • Единообразное форматирование для всех записей данных
  • Уникальные ключи для всех записей и объектов базы данных
  • Каждый столбец в таблице имеет имя и тип данных.

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

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

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

Примечание. Некоторыми популярными СУБД являются MySQL, Oracle, PostgreSQL, Microsoft Access, MariaBB и dBASE и другие.

Типы схемы базы данных

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

Логический

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

Примечание. Ограничения целостности - это набор правил для СУБД, обеспечивающих качество вставки и обновления данных.

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

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

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

  • Первичный ключ: определите запись в таблице.
  • Внешний ключ: первичный ключ для другой таблицы.

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

Физический

Схема физической базы данных показывает, как данные хранятся в дисковом хранилище. Другими словами, это фактический код, который будет использоваться для создания структуры вашей базы данных. Например, в MongoDB с мангустом это примет форму модели мангуста. В MySQL вы будете использовать SQL для создания базы данных с таблицами.

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

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

Пример NoSQL

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

Этот фрагмент является примером того, как будет выглядеть физическая схема базы данных при использовании Mongoose (MongoDB) для создания базы данных, представляющей приведенную выше диаграмму взаимосвязи сущностей.

ConsumerSchema.js

const mongoose = require('mongoose');

const Customer = new mongoose.Schema({
   name: {
       type: String,
       required: true
   },
   zipcode: {
       type: Number,
   }
})

module.exports = mongoose.model("Customer", Customer);

ProductSchema.js

const mongoose = require('mongoose');

const Product = new mongoose.Schema({
   name: {
       type: String,
       required: true
   },
   price: {
       type: String,
       required: true
   }
})

module.exports = mongoose.model("Product", Product);

TransactionSchema.js

const mongoose = require('mongoose');
const Transaction = new mongoose.Schema({
date: {
type: String,
required: true
},
cust_id: {
type: mongoose.Schema.Types.ObjectId, // signifies relationship to Customer Schema
ref: 'Customer'
},
products: [{
type: mongoose.Schema.Types.ObjectId, // signifies relationship to Product Schema
ref: 'Product'
}]
})
module.exports = mongoose.model("Transaction", Transaction);

Здесь важно помнить, что в базах данных NoSQL, таких как MongoDB, нет внешних ключей. Другими словами, между схемами нет отношений. ObjectId просто представляет _id (идентификатор, который Mongo автоматически назначает при создании) документа в другой коллекции. На самом деле это не создает соединение.

Продолжайте обучение.

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

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

Пример SQL-сервера

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

SQL используется для доступа, обновления и управления данными. MySQL - это СУБД для хранения и организации.

Мы можем использовать SQL Server CREATE SCHEMA для создания новой схемы в базе данных. В MySQL схема является синонимом базы данных. Вы можете заменить ключевое слово SCHEMA на DATABASE в синтаксисе MySQL SQL.

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

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

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

CREATE DATABASE example;
USE example;

DROP TABLE IF EXISTS customer;

CREATE TABLE customer (
 id INT AUTO_INCREMENT PRIMARY KEY,
 postalCode VARCHAR(15) default NULL,
)

DROP TABLE IF EXISTS product;

CREATE TABLE product (
 id INT AUTO_INCREMENT PRIMARY KEY,
 product_name VARCHAR(50) NOT NULL,
 price VARCHAR(7) NOT NULL,
 qty VARCHAR(4) NOT NULL
)

DROP TABLE IF EXISTS transactions;

CREATE TABLE transactions (
 id INT AUTO_INCREMENT PRIMARY KEY,
 cust_id INT,
 timedate TIMESTAMP,
 FOREIGN KEY(cust_id)
     REFERENCES customer(id),
)

CREATE TABLE product_transaction (
 prod_id INT,
 trans_id INT,
 PRIMARY KEY(prod_id, trans_id),
 FOREIGN KEY(prod_id)
     REFERENCES product(id),
 FOREIGN KEY(trans_id)
     REFERENCES transactions(id)

Пример PostgreSQL

PostgreSQL - это бесплатная система управления реляционными базами данных с открытым исходным кодом, которая отличается высокой расширяемостью и соответствует требованиям SQL. В PostgreSQL схема базы данных - это пространство имен с именованными объектами базы данных.

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

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

Итак, хотя база данных Postgres может содержать несколько схем, уровень будет только один. Давайте посмотрим на визуальное представление:

В PostgreSQL база данных кластер содержит одну или несколько баз данных. Пользователи совместно используются в кластере, но данные не передаются. Вы можете использовать одно и то же имя объекта в нескольких схемах.

Для начала мы используем оператор CREATE SCHEMA. Обратите внимание, что PostgreSQL автоматически создаст общедоступную схему. Здесь будет размещаться каждый новый объект.

CREATE SCHEMA name;

Чтобы создать объекты в схеме базы данных, мы пишем полное имя, которое включает имя схемы и имя таблицы:

schema.table

Следующий пример из документации Postgres CREATE SCHEMA для запуска новой схемы с именем scm, таблицы с именем deliveries и представления с именем delivery_due_list.

CREATE SCHEMA scm 
    CREATE TABLE deliveries(
        id SERIAL NOT NULL, 
        customer_id INT NOT NULL, 
        ship_date DATE NOT NULL
    )
    CREATE VIEW delivery_due_list AS 
        SELECT ID, ship_date 
        FROM deliveries 
        WHERE ship_date <= CURRENT_DATE;

Что учить дальше

Поздравляем! Теперь вы знаете основы схем баз данных и готовы вывести свои навыки проектирования баз данных на новый уровень. Схемы баз данных жизненно важны для создания баз данных. Независимо от того, используете ли вы базу данных на базе NoSQL или SQL, схемы базы данных составляют основу ваших приложений.

Чтобы продолжить обучение, вам следует обсудить следующие темы:

  • Архитектура с тремя схемами
  • Модели сущности-отношения
  • Понятия реляционной модели
  • Функциональные зависимости
  • Нормализация

Чтобы начать работу с этими концепциями, загляните в универсальный магазин Educative по проектированию баз данных: Основы проектирования баз данных для инженеров-программистов. Этот курс охватывает фундаментальные концепции баз данных. Вы откроете для себя такие методы, как нормализация, которые помогают повысить эффективность баз данных. После завершения этого курса вы сможете перейти к более продвинутым концепциям, таким как использование систем баз данных!

Читать о базах данных