«Какой ваш любимый предмет в программе обучения информатике?»
Что ж, моя тема - «Дизайн баз данных», и я считаю, что это один из важнейших предметов информатики.
За свою 10-летнюю карьеру я прошел путь от разработчика до технического менеджера во многих продуктовых командах. Они были из разных доменов и с разными потребностями в масштабируемости. Во время этого путешествия я познакомился с проектированием и нормализацией баз данных с разных точек зрения.
Я хочу поделиться своими мыслями об этих двух фундаментальных концепциях баз данных.
Сначала давайте послушаем, что Википедия говорит о проектировании баз данных.
Проектирование базы данных - это процесс создания подробной« модели данных базы данных . Эта модель данных содержит все необходимые логические и варианты физического проектирования и параметры физического хранилища, необходимые для создания проекта на языке определения данных, который затем можно использовать для создания базы данных. Модель данных с полным набором атрибутов содержит подробные атрибуты для каждой сущности ».
Фух! Я рад, что нам больше не нужно об этом помнить, благодаря Интернету.
Позвольте мне пояснить два слова логический и физический варианты дизайна сверху на примере.
Мой 3-летний сын каждый день пакует свою сумку самостоятельно. Он кладет книги в большой карман, бутылку с водой в боковой карман и коробку для завтрака в верхний карман сумки. Практически все будут делать то же самое. Почему? Потому что это логический и физический выбор дизайна.
Другой пример - люди, делающие покупки в супермаркетах. Для кого-то практически невозможно пойти в продуктовый отдел за мебелью, если магазин не спроектирован плохо. Каждый день мы сталкиваемся с множеством подобных ситуаций, когда путешествуем по организованному миру. т.е. выбор, основанный на логическом и физическом дизайне.
Но когда мы берем проектирование базы данных как задачу в нашей профессиональной жизни, многие из нас делают ошибку, выбирая сначала «базы данных», такие как MySQL, MSSQL, MongoDB, вместо того, чтобы найти больше о данных и отношения между ними.
Это похоже на то, как при проектировании супермаркета мы думаем о деревянных или стальных полках в первую очередь для организации вещей, а не для определения того, какие типы товаров будет продавать супермаркет.
Другая такая тема - Нормализация, тоже моя любимая тема для интервью. Многие программисты ошибочно полагают, что нормализация создает проблемы с производительностью из-за ненужных объединений.
Давайте проверим определение:
«Нормализация базы данных или просто нормализация - это процесс организации атрибутов и отношений реляционной базы данных , чтобы уменьшить избыточность и улучшить целостность данных ».
Одно заблуждение относительно нормализации заключается в том, что она применяется при создании таблиц, а не при проектировании баз данных. Хотя его практическая реализация есть только на уровне таблиц, но это зависит от обстоятельств.
Зависит от чего?
3 года носит книги и воду в многофункциональной сумке. Молодой инженер-программист несет ноутбук в сумке для ноутбука. Его любящая жена упаковывает для него вкусный ланч в коробку для подарков.
Чтобы что-то нести, нам нужен контейнер, но это зависит от того, что везут.
Точно так же хранение данных зависит от того, что нужно хранить и как часто к ним обращаются. Но это не означает, что мы не определяем атрибуты данных и отношения между данными, что по сути является структурой базы данных.
Как и многие другие концепции в информатике, мы ежедневно имеем дело с проектированием и нормализацией баз данных, но иногда мы просто не замечаем корреляции. Надеюсь, это поможет и улучшит восприятие дизайна и нормализации базы данных, особенно для программистов начального уровня.
Первоначально опубликовано на www.digi-corp.com 24 апреля 2017 г.