Php ID номер

Опубликовано 2021.09.04

Такой термин как ID встречается очень часто. Чаще всего о нём говорят в контексте социальных сетей, но на самом деле он присущ 99% таблиц баз данных, а значит практически всем сайтам. Даже сейчас, когда вы читаете эту статью-у неё есть уникальный ID.

Вообще ID - это порядковый номер, и он уникален в рамках конкретной сущности.

Разберём на примере простого блога. В блоге есть статьи, которые помечены тэгами и у каждой статьи есть автор.

В такой системе будет три(на самом деле четыре) сущности, а именно: запись в блоге, автор и тэг.

Каждая из них хранится в отдельной таблице. В каждой таблице есть поле ID, типа integer с пометкой auto_increment. Это значит, что это поле заполняется автоматически таким образом, что при добавлении новой строки его значение увеличивается на 1.

То есть:

articles

idtitlebodyauthor
1Котики...1
2Собачки...1
3Птички...1

Как видите, у каждой статьи свой номер.

Аналогично строятся таблицы для пользователей и тэгов:

users

idlogin
1admin
2editor
3master

tags

idname
1домашние животные
2пушистые
3дикие животные

У записи в блоге и тэга может быть одинаковый ID. Так как это разные сущности-такое пересечение допустимо.

Некоторые особенности

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

То есть, если вы добавите 5 тэгов с ID 1, 2, 3, 4 и 5, а затем удалите пятый и добавите новую запись - у неё ID будет равен 6. Это сделано для сохранения целостности данных. Ведь на эту таблицу могут ссылаться другие таблицы,различные сервисы или API. ID может фигурировать в url страницы, которая уже проиндексирована и т.д.

Работа с API

Предположим у вас есть сайт, тот же блог, и вы решили сделать для него мобильное приложение. Для отображения в нём контента сайта его нужно получать по API. В нашем случае достаточно будет двух точек доступа, а именно на список материалов и на один материал. Выглядеть это будет так:

  1. /api/articles
  2. /api/articles/$ID

То есть первым запросом мы получаем список материалов, с заголовками и ID номерами статей:

Запрос:

  1. GET /api/articles

Ответ:

  1. [
  2. {
  3. "id":1,
  4. "title":"Котики"
  5. },
  6. {
  7. "id":2,
  8. "title":"Собачки"
  9. },
  10. {
  11. "id":3,
  12. "title":"Птички"
  13. }
  14. ]

Взяв из него нужный номер передаём его во второй запрос.

Запрос:

  1. GET /api/articles/2

Ответ:

  1. {
  2. "id":2,
  3. "title":"Собачки",
  4. "body":"..."
  5. }

Связи данных

Теперь поговорим о четвёртой сущности. Это связь материалов с тэгами. Один материал может быть связан сразу с несколькими тэгами. Для этого создадим таблицу связей с колонками id, article_id, tag_id.

И теперь, если статье надо проставить три тэга - добавляем в таблицу три строки. article_id у всех трёх строк будет одинаковым, а tag_id разным.

Пример трёх таблиц.

articles_tags
idarticle_idtag_id
111
212
313

Вот такая область применения у такого понятия как ID. Если вам есть что добавить или возразить-добро пожаловать в комментарии.