Как вы храните данные, зависит от того, как вы хотите получить доступ к данным.
Если вы хотите когда-либо см. описания и хеш-теги, затем вы можете поместить их в одно неиндексированное поле и извлекать их для каждого изображения.
Из того, что вы укажете, вы, похоже, захотите столбец descriptions
, который можно искать как текст.Это может быть достаточно для ваших целей.
Однако, если вы хотите иметь возможность задавать вопросы конкретно о хеш-тегах, таких как:
- Какие хеш-теги есть в базе данных и какмногие?
- Какие хеш-теги имеются на определенном изображении или наборе изображений?
- Какие хеш-теги объединяют два изображения?
- Какие хеш-теги "содержат" другиехеш-теги (т.е. #cat и #catamaran)?
Тогда вам понадобится отдельная таблица хеш-тегов.Моя рекомендация будет объединить два.Что-то вроде:
create table images (
imageId int auto_increment primary key,
description text,
createdAt datetime,
createdBy varchar(255),
fulltext (description)
);
create table imageHashtags as (
imageHashtagId auto_increment primary key,
imageId int not null,
hashtag varchar(255),
constraint fk_imagehashtags_imageid foreign key (imageid) references images(imageid),
index (hashtag)
);
Возможно, вам понадобится справочная таблица для самих хэштегов, чтобы они не дублировались в таблице.Недостаточно информации, чтобы понять, насколько это хороший подход.