DBMS - 12 правил Кодда

Здравствуйте, будущие энтузиасты баз данных! Сегодня мы окунемся в fascinирующий мир систем управления базами данных (DBMS) и рассмотрим знаменитые 12 правил Кодда. Эти правила, сформулированные отцом реляционных баз данных, доктором Эдгаром Ф. Коддом, resemble Заповеди в мире баз данных. Они не просто правила; они являются руководящими принципами, которые формируют наше мышление и designing современных баз данных.

DBMS - Codd

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

Правило 1: Правило информации

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

Рассмотрим простой пример:

CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Age INT
);

В этом примере мы создаем таблицу "Students". Каждая информация о студенте (их ID, имя, фамилия и возраст) представлена в виде столбца этой таблицы. Это суть правила информации - все данные хранятся в таблицах.

Правило 2: Правило гарантированного доступа

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

Например, если мы хотим найти возраст студента с ID 1, мы можем использовать:

SELECT Age FROM Students WHERE StudentID = 1;

Этот запрос гарантирует доступ к конкретной информации, следуя правилу 2.

Правило 3: Систематическое обращение с NULL значениями

NULL значения resemble тайные книги в нашей библиотеке - они представляют unknown или неприменимую информацию. Это правило ensures, что NULL значения treated консистентно во всех операциях.

Например, при вставке нового студента без знания его возраста:

INSERT INTO Students (StudentID, FirstName, LastName, Age)
VALUES (2, 'Jane', 'Doe', NULL);

База данных treat это NULL значение систематически, позволяя для операций, таких как:

SELECT * FROM Students WHERE Age IS NULL;

Правило 4: Активный онлайн каталог

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

Мы можем запрашивать этот каталог. Например, в SQL Server:

SELECT * FROM INFORMATION_SCHEMA.TABLES;

Этот запрос gives нам информацию о всех таблицах в нашей базе данных, demonstrating активный онлайн каталог в действии.

Правило 5: Полноценный подъязык данных Rule

Это правило похоже на то, что наша библиотека должна иметь universal язык для поиска, чтения и organizating книг. В терминах баз данных это означает, что должен быть comprehensive язык для всех операций с базой данных.

SQL (Структурированный язык запросов) является наиболее common примером этого. Он позволяет нам делать все от создания таблиц до запроса данных:

-- Создание таблицы
CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(100),
Author VARCHAR(50)
);

-- Вставка данных
INSERT INTO Books (BookID, Title, Author)
VALUES (1, 'Database Design 101', 'E. F. Codd');

-- Запрос данных
SELECT * FROM Books WHERE Author = 'E. F. Codd';

Правило 6: Правило обновления представлений

Представления resemble custom книжные полки в нашей библиотеке. Это правило гласит, что если вы можете see представление, вы должны иметь возможность его обновить (с некоторыми ограничениями).

Вот пример создания и обновления представления:

-- Создание представления
CREATE VIEW TeenageStudents AS
SELECT * FROM Students WHERE Age BETWEEN 13 AND 19;

-- Обновление через представление
UPDATE TeenageStudents
SET Age = 18
WHERE StudentID = 1;

Правило 7: Высокоуровневое вставка, обновление и удаление Rule

Это правило ensures, что мы можем modify наборы данных одним махом, а не один record за раз. Это похоже на то, что мы можем передвигать целые полки книг сразу, а не по одной книге.

Например:

-- Вставка нескольких записей
INSERT INTO Students (StudentID, FirstName, LastName, Age)
VALUES
(3, 'Alice', 'Johnson', 20),
(4, 'Bob', 'Smith', 22),
(5, 'Charlie', 'Brown', 19);

-- Обновление нескольких записей
UPDATE Students
SET Age = Age + 1
WHERE Age < 20;

-- Удаление нескольких записей
DELETE FROM Students
WHERE Age > 25;

Правило 8: Физическая независимость данных

Это правило касается разделения физического хранения данных и того, как мы с ними interact. Это похоже на то, что вам все равно, является ли книга в твердом или мягком переплете - вы все равно можете читать ее одинаково.

На практике это означает, что изменение физического хранения (например, переход с HDD на SSD) не должно require изменений в коде приложения.

Правило 9: Логическая независимость данных

Podобно правилу 8, но на логическом уровне. Это означает, что мы должны иметь возможность изменять логическую структуру (например, добавлять новый столбец) без affecting существующие приложения.

Например, если мы добавим новый столбец в нашу таблицу Students:

ALTER TABLE Students
ADD Email VARCHAR(100);

Существующие приложения, запрашивающие таблицу Students, должны продолжать работать без изменения.

Правило 10: Независимость целостности

Это правило ensures, что целостные ограничения (например, "Возраст должен быть положительным") определены в базе данных, а не в приложении. Это похоже на то, что правила categorization книг enforced библиотечной системой, а не отдельными библиотекарями.

Пример:

CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
Age INT CHECK (Age > 0 AND Age < 120)
);

Здесь ограничения определены на уровне базы данных, ensuring целостность независимости.

Правило 11: Независимость распределения

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

Хотя для этого правила нет простого примера кода, modern распределенные базы данных реализуют этот принцип за кулисами.

Правило 12: Правило неподавления

Последнее правило касается безопасности и consistence. Оно гласит, что если база данных имеет способ доступа к записям (например, SQL), не должно быть способа bypass этот доступ и получить данные напрямую. Это похоже на то, что все выдачи книг проходят через библиотечную систему, без backdoor доступа.

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

Чтобы резюмировать все эти правила в удобной таблице:

Правило Описание
1 Правило информации
2 Правило гарантированного доступа
3 Систематическое обращение с NULL значениями
4 Активный онлайн каталог
5 Полноценный подъязык данных Rule
6 Правило обновления представлений
7 Высокоуровневое вставка, обновление и удаление Rule
8 Физическая независимость данных
9 Логическая независимость данных
10 Независимость целостности
11 Независимость распределения
12 Правило неподавления

И вот оно, друзья! 12 правил Кодда в nutshell. Помните, эти правила были сформулированы в 1985 году, и although не все современные базы данных строго следуют каждому правилу, они по-прежнему formируют теоретическую основу реляционных систем управления базами данных.

Подводя итог, я надеюсь, что это путешествие через правила Кодда было таким же enlightening для вас, как и каждый раз, когда я преподаю их. Эти принципы shaped мир баз данных, который мы знаем сегодня, и понимание их - ваш первый шаг к тому, чтобы стать гуру баз данных. Continue practicing, stay curious, и кто знает? Возможно,有一天 вы будете формулировать следующую серию突破性的 принципов баз данных!

Credits: Image by storyset