«Какой ваш любимый предмет в программе обучения информатике?»

Что ж, моя тема - «Дизайн баз данных», и я считаю, что это один из важнейших предметов информатики.

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

Я хочу поделиться своими мыслями об этих двух фундаментальных концепциях баз данных.

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

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

Фух! Я рад, что нам больше не нужно об этом помнить, благодаря Интернету.

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

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

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

Но когда мы берем проектирование базы данных как задачу в нашей профессиональной жизни, многие из нас делают ошибку, выбирая сначала «базы данных», такие как MySQL, MSSQL, MongoDB, вместо того, чтобы найти больше о данных и отношения между ними.

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

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

Давайте проверим определение:

«Нормализация базы данных или просто нормализация - это процесс организации атрибутов и отношений реляционной базы данных , чтобы уменьшить избыточность и улучшить целостность данных ».

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

Зависит от чего?

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

Чтобы что-то нести, нам нужен контейнер, но это зависит от того, что везут.

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

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

Первоначально опубликовано на www.digi-corp.com 24 апреля 2017 г.