Какие бывают базы данных

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

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

Счи­тай­те, что эта ста­тья для рас­ши­ре­ния кру­го­зо­ра.

Три основных типа

В зави­си­мо­сти от того, какие дан­ные нуж­но в ней хра­нить и как с ними рабо­тать, базы делят­ся на реля­ци­он­ные и нере­ля­ци­он­ные:

Реляционные

Реля­ци­он­ные базы дан­ных ещё назы­ва­ют таб­лич­ны­ми, пото­му что все дан­ные в них мож­но пред­ста­вить в виде раз­ных таб­лиц. Одни таб­ли­цы свя­за­ны с дру­ги­ми, а дру­гие — с тре­тьи­ми. Напри­мер, база дан­ных поку­пок в мага­зине может выгля­деть так:

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

Если у поку­па­те­ля поме­ня­ет­ся номер теле­фо­на, то нам доста­точ­но будет поме­нять это в одной таб­ли­це «Кли­ен­ты». Бла­го­да­ря тому, что в «Покуп­ки» запи­сы­ва­ет­ся толь­ко код поку­па­те­ля, нам не нуж­но менять имя боль­ше нигде — дан­ные сами обно­вят­ся авто­ма­ти­че­ски, когда мы захо­тим посмот­реть, кто имен­но купил табу­рет.

Сетевые

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

Если мы возь­мём базу дан­ных с сай­та Кино­по­ис­ка, то она может выгля­деть так:

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

Напри­мер, вы посмот­ре­ли «Нача­ло» Кри­сто­фе­ра Нола­на и вам понра­вил­ся этот фильм. Когда вы перей­дё­те к спис­ку филь­мов, кото­рые он ещё снял, база на сай­те сде­ла­ет так:

  • возь­мёт имя режис­сё­ра;
  • посмот­рит, какие свя­зи и с чем у него есть;
  • выдаст спи­сок филь­мов;
  • к этим филь­мам может сра­зу под­гру­зить спи­сок актё­ров, кото­рые там игра­ют;
  • и сра­зу же пока­зать посте­ры к каж­до­му филь­му.

А глав­ное — база сде­ла­ет это очень быст­ро, пото­му что ей не нуж­но про­смат­ри­вать всю базу в поис­ках нуж­ных филь­мов. Она сра­зу видит, какие филь­мы с чем свя­за­ны, и выда­ёт ответ.

Иерархические

Иерар­хия — это когда есть выше­сто­я­щий, а есть его под­чи­нён­ные, кто ниже. У них могут быть свои под­чи­нён­ные и так далее. Мы уже каса­лись такой моде­ли, когда гово­ри­ли про дере­вья и бустинг.

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

Вид­но, что на дис­ке C: есть мно­го папок: Dropbox, eSupport, GDrive и все те, кото­рые не поме­сти­лись на экране.

Внут­ри пап­ки GDrive есть ###_Inbox и #_Альбатрос, а внут­ри #_Альбатроса — десят­ки дру­гих папок. Если мы посмот­рим на скрин­шот, то уви­дим, то долж­ност­ная инструк­ция бух­гал­те­ра лежит с осталь­ны­ми фай­ла­ми внут­ри пап­ки Долж­ност­ные и охра­на тру­да, кото­рая лежит внут­ри пап­ки Инструк­ции.

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

Главное о базах данных

  • Чаще все­го базы дан­ных напо­ми­на­ют таб­ли­цы: в них одно­му пара­мет­ру соот­вет­ству­ет один набор дан­ных. Напри­мер, один кли­ент — одно имя, один теле­фон, один адрес.
  • Такие «таб­лич­ные» базы дан­ных назы­ва­ют­ся реля­ци­он­ны­ми.
  • Что­бы стро­ить слож­ные свя­зи, раз­ные таб­ли­цы в реля­ци­он­ных базах мож­но свя­зы­вать меж­ду собой: ста­вить ссыл­ки.
  • Реля­ци­он­ная база — не един­ствен­ный спо­соб хра­не­ния дан­ных. Есть ситу­а­ции, когда нам нуж­на боль­шая гиб­кость в хра­не­нии.
  • Быва­ют сете­вые базы дан­ных: когда нуж­но хра­нить мно­го свя­зей меж­ду мно­же­ством объ­ек­тов. Напри­мер, ката­лог филь­мов: в одном филь­ме может участ­во­вать мно­го чело­век, а каж­дый из них может участ­во­вать во мно­же­стве филь­мов.
  • Быва­ют иерар­хи­че­ские базы, или «дере­вья». При­мер — наша фай­ло­вая систе­ма.
  • Какую выбрать базу — зави­сит от зада­чи. Одна база не луч­ше дру­гой, но они могут быть более или менее под­хо­дя­щи­ми для опре­де­лён­ных задач.
Текст и иллю­стра­ции:
Миша Поля­нин
Редак­тор:
Мак­сим Илья­хов
Кор­рек­тор:
Ира Михе­е­ва
Иллю­стра­тор:
Даня Бер­ков­ский
Вёрст­ка:
Маша Дро­но­ва
Достав­ка:
Олег Веш­кур­цев
Что-то дела­ет рука­ми:
Паша Федо­ров
Во сла­ву:
Прак­ти­ку­ма