Форма входа

Unatka.ru

На­вы­ки веб - раз­ра­бот­чика

База дан­ных сайта

     Чтобы хранить данные, нужно организовать данные сайта. И разместить каким-то образом в созданной для Вашего сайта базе.

Система управления БД MariaDB работает так: указываем имя таблицы, имя столбца и имя строки. Тем самым определяем единственное значение, хранимое в указанной ячейке таблицы.

Википедия предлагает различные виды клас­сифи­кации баз данных. Честно говоря, нам эти проблемы ни к чему. Но для полноты картины отмечу: по модели они делятся на:

  • Иерар­хическая

  • Объект­ная и объектно - ори­енти­ро­ван­ная

  • Объектно - реля­цион­ная

  • Реляци­онная

  • Сетевая

  • Функ­циональ­ная.

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

    Итак, нужно создать таблицы базы данных. Я не хочу пугать Вас мате­мати­ческими терминами, попробую попроще. Создать таблицу, содержащую простые статьи, несложно. Представим себе, как она будет выглядеть. Назовем ее, например, list.

     Чем характерна статья? У нее есть заголовок и содержание. Больше ничего. Вот их-то, заголовок и содержание, и нужно сохранить в СУБД, а затем вызвать оттуда. Характе­ристика статьи, которая определяет остальные ее составляющие — поряд­ковый номер. Сохраняются данные или прямым вводом их в таблицы БД, или с помощью кода php. В обоих случаях задача несложная. А вот как вызывать их?

     Первым столбцом любой таблицы будет поряд­ковый номер строки. Пусть его имя - id.

     Вторым должен быть заголовок. Следовательно, добавим столбец Name, куда будем складывать заголовки статей.

    Третьим - содержание. Добавим столбец Text, он будет отвечать за содержание.

Если все материалы — читай «статьи», разбиты на разделы, понадобится увязать заголовок статьи с тем разделом, куда ее относем. Для этого придется в таблице list создать столбец с указанием раздела, к которому привязана статья. В результате получаем 4 столбца с именами id, Name, Text, Razdel. В столбец Razdel будем вписывать имена разделов, соответствующей статьи.

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

1 статья Заголовок «Только веники жевать»;

2 статья Заголовок «Проводил меня до дому»;

3 статья Заголовок «Не сумел поцеловать»;

Сохраняем их в таблице list следующим образом:

Таблица list. Как не надо.

id - имя пер­во­го столб­ца

Name - имя вто­ро­го столб­цаText - имя треть­его столб­цаRaz­del - имя чет­вер­того столб­ца
1

Толь­ко ве­ни­ки же­вать

Здесь со­дер­жа­ние ста­тьи

Мой ми­ле­нок, как те­ле­нок

2

Про­во­дил меня до дому

Здесь со­дер­жа­ние ста­тьи

Мой ми­ле­нок, как те­ле­нок

3

Не су­мел по­це­ло­вать

Здесь со­дер­жа­ние ста­тьи

Мой ми­ле­нок, как те­ле­нок

Выборка выполняется следующим образом:

1. Выбираем имена разделов.

2. Выбираем все id статей, соответ­ствующие имени раздела. Понятно, имя раздела должно быть известно. Создаем список меню.

3. Нажав на ссылку, переходим к странице с id, заданным ссылкой.

4. По id выбираем содержание статьи.

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

Почему так не надо?

    Казалось бы, чего проще — указывай имя раздела и выбирай все статьи с этим именем.

Допустим, по некоей причине нужно пере­именовать группу статей. А если в искомом разделе уже создана сотня строк? Представляете, как нужно действовать? Думаю — да. Листаем страницу за страницей и методически пере­имено­вываем. Сложно, муторно! Скучно, наконец! Что же делать? Как обойти этот айсберг?

    Проще всего привязать имя раздела к цифре или числу. Создаем таблицу, где каждый раздел получит свой уникальный номер. Назовем ее, например, razdely. Помещая в столбец вместо имени - номер, сводим пере­имено­вание раздела к одному действию. Потому что номер у него останется тем же, как его не называй.

Таблица list

id

NameTextRaz­del
1

Толь­ко ве­ни­ки же­вать

Здесь со­дер­жа­ние ста­тьи

1
2

Про­во­дил меня до дому

Здесь со­дер­жа­ние ста­тьи

1
3

Не су­мел по­це­ло­вать

Здесь со­дер­жа­ние ста­тьи

1

Таблица razdely

id - имя пер­во­го столб­ца

Name — имя вто­ро­го столб­ца

1

Мой ми­ле­нок, как те­ле­нок

2раздел 2

Таблица Так лучше

      У нас две таблицы в базе. Может быть нужны еще какие-то? Это зависит от Вас. Смотря, что нужно. Можем добавить к таблице статей столбец глав. В этом случае нам потребуется решить, как вызывать статью определенной главы. То, что имя главы будет определяться ее номером, очевидно. А как связать разделы с главами, статьи с разделами? Как теперь выглядит меню? И сможем ли мы за пару кликов добраться до страницы?

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

Остается решить — будет ли разбивка выполняться в рамках одной таблицы или проще, а значит лучше, разбить контент по таблицам. Здесь — воля Ваша.

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

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

Структура БД будет содержать три таблицы:

Таблица list

idNameTextRaz­delGla­va
1Пер­вая ста­тья

Здесь со­дер­жа­ние ста­тьи

11
2Вто­рая ста­тья

Здесь со­дер­жа­ние ста­тьи

12
3Тре­тья ста­тья

Здесь со­дер­жа­ние ста­тьи

23

Таблица razdely

idName
1раз­дел 1
2раз­дел 2

Таблица Glava

idNameRaz­del
1глава 11
2глава 21
3глава 32
4глава 41
5глава 52

     Итак, пред­вари­тельно орга­низо­вывать базу данных сайта нужно для того, чтобы пред­ста­вить себе общую картину как можно полнее. Структура БД более или менее определяет структуру меню, ссылки, вид страницы, порядок создания кода. Теперь войдем в СУБД и начнем создание базы данных в СУБД MariaDB. Но сначала кор­рек­ти­руем перво­началь­ную схему нави­гации, мы же изменили структуру БД.

Родионова Галина

2018-03-02


◄ Назад 

 Вперед ►

Поделитесь с друзьями!

Закрыть
Форма входа

Я согласен(на) на обработку моих персональных данных