Как правильно создать в БД таблицу, которая будет отвечать за новости?

214
01 марта 2017, 20:03

Допустим, на данный момент я хочу вывести картинку, заголовок, вступительный текст и полный текст (при открытии страницы с новостями). Само собой, в самом начале id, но он не выводится.

Собственно, сама таблица, еще не созданная:

И у меня вопрос, картинка какой тип должна иметь? Исходя из опыта работы в MS Access, есть специальный тип для медиафайлов, а здесь я его не нашел.

Альтернативный способ: хранить картинки отдельно в папке и вызывать их через id (т.е. название картинки будет соответствовать id в БД, тем самым выведется нужная картинка).

Answer 1

Альтернативный альтернативный способ: хранить информацию о файлах в отдельной таблице files, а в news ссылаться на неё. Таким образом вы:

  • всегда будете знать, какие файлы у вас используются;
  • сможете настроить внешние ключи;
  • избавитесь от неочевидной привязки имени файла в файловой системе к строке в БД;
  • сможете прикреплять к новости несколько файлов;
  • сможете прикреплять файлы не только к новостям.
  • сможете воспользоваться стандартной схемой, когда из файла вычисляется хеш и исходя из этого хеша формируется дерево директорий (например, файл с хешем somehash хранится в /files/som/eha/somehash, это позволяет избежать большого колиечства файлов в одной директории).
Answer 2

Картинки хранятся в различных полях BLOB (TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB) отличаются они максимальным размером данных, которые может содержать поле (255, 65 535, 16 777 215, 4 294 967 295 байт)

Answer 3

Кто вообще хранит файлы в бд? Это самое, что ни на есть " Плохая практика". Поля все те, для числовых ставишь тип "int", для заголовка, изображения, вступительного текста - "varchar", ну и само собой для полной новости - тип "text". При создании новости просто заливаешь файл изображения в скажем папку upload/news/id на сервере и в бд записываешь лишь ссылку на нее. Все.

READ ALSO
Как реализовать такое в mysql

Как реализовать такое в mysql

ЗдравствуйтеСкажите пожалуйста как такое реализовать

254
Как подключиться к БД MySQL через Node.js в проекте Angular Universal?

Как подключиться к БД MySQL через Node.js в проекте Angular Universal?

Я хочу подключиться к БД MySQL через Nodejs в моем проекте на Angular Universal

348
Ошибка 0 rows update when that should have been 1

Ошибка 0 rows update when that should have been 1

Используется HeidiSQLMySql 5,7 х64

263
Изменить значение JSON в массиве [RethinkDB]

Изменить значение JSON в массиве [RethinkDB]

В RethinkDB есть строка формата:

308