PHP + AngularJS: Первый сайт не комом. Часть 1. База данных

Для того чтобы научиться программировать нужно пробовать программировать самые простые, но функциональные вещи. Чтобы лучше понять как сделать «свой первый самый лучший в мире» сайт — рассмотрим пример элементарного сайта из одного уровня объектов — страниц. Нам нужно

  • создать базу данных с таблицей страниц
  • создать страницы редактирования страниц)))
  • создать отображение страниц из базы на сайте

Готовый код, по которому будет идти рассказ что где и почему. Пример простейшего сайта с админкой в связке PHP + AngularJS

Создание базы

Будем считать, что у Вас уже установлена вся связка (апач + пхп + мускул), а также что Вы уже немного умеете работать с администрированием базы (хоть через ПхпМайАдмин, хоть через консоль — не суть важно).

Красиво на каждый отдельный тип объекта в системе заводить отдельную таблицу. Так Вы сохраняете однозначность данных. Таблицу лучше называть так же как и в дальнейшем мы будем называть модели и контроллеры, и если у нас объекты — ящики, то все с ними связанное — это ящик и ящики. Коробки, боксы, контейнеры и другие синонимы мы оставим лингвистам. Однозначность! Единость! Сходимость!.. ой, это из другой оперы, но Вы я думаю поняли

init.sql

CREATE TABLE IF NOT EXISTS `pages` (
  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(255) NOT NULL,
  `url` VARCHAR(255) NOT NULL,
  `info` text,
  `intro` text,
  `full` text,
  `crtime` datetime NOT NULL,
  `chtime` datetime DEFAULT NULL,
  `status` INT(1) UNSIGNED NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

id — универсальный ключ (поле автоинкремент означает что каждая новая запись получит новый растущий вверх номер, так что мы точно можем быть уверены в ее единственности по номеру — это также позволяет ее использовать как первичный ключ. именно поля такого рода позволяют говорить — я хочу отредактировать запись 1, удалить запись 2, а база не удаляет 1 вместе с 2)

title, url… — все милые и приятные нам поля для формы, не заставляйте редактора придумывать супер форматирование — дайте ему больше удобных ячеек — сюда вставь название, сюда вступление, а это для цитаты, так проще и удобнее для большинства, а меньшинство — это теперь Вы и я

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

status — из более чем Хлетнего опыта — никогда не удаляйте записи строгим удалением (DELETE FROM). НИКОГДА! именно та запись, которую случайно убъет редактор, окажется незабекапленной ежедневным скриптом и пропадет навеки под плач других редакторов. Удалять вообще пагубная привычка что либо кроме логов. И даже логи) Если есть возможность красиво спроектировать базу изначально — внесите код «статус_удален» и проставляйте его записям. При накоплении существенного количества удаленных таким образом записей Вы их можете перенести в архивную таблицу / партицировать данные. Про это можно долго — главное просто представить один раз, что пользоваться админкой будет пьяный голландский матрос с желанием крушить и убивать. А Вам потом расхлебывать. Статус нам достаточно короткий иметь, отсюда маленькая длина.

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

One Response to “PHP + AngularJS: Первый сайт не комом. Часть 1. База данных”

Оставить комментарий

XHTML: Вы можете использовать такие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">