2013-12-11 3 views
0

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

Я не уверен, как хранить несколько тегов для одного файла, самым простым способом я могу представить их как одну строку гиперссылок. Но это ставит вопрос о возможности отображения тегов в виде ссылок в приложении Windows в виде списка, а также как я могу фильтровать результаты поиска с помощью этого метода.

Более сложной идеей я бы хотел создать отдельную таблицу тегов, назначить каждому тегу уникальное трехзначное целое число, которое будет храниться как комбинированный длинный int для нескольких тегов.

например.

001 - tag1 
002 - tag2 
003 - tag3 

, а затем хранить их в информации о файле, как 001002003, если все три метки были связаны с файлом.

Если я сделаю это так, должен ли я объявить каждый мод как объект класса «Мод» в моем приложении, а затем переназначить гиперссылку на каждое значение тега и сохранить теги в виде коллекции объектов тега как свойство каждого мода? Является ли это платной идеей или я ее несколько усложнил?

EDIT:

Еще на ранних стадиях развития, еще предстоит проверить реализацию этого еще, но в настоящее время им, глядя на 50-100 тегов.

Как бы я начал структурировать таблицу files_to_tags? Я довольно новичок в моделировании реляционных баз данных, я бы лучше использовал CSV для хранения данных, но это не очень эффективно!

+0

Поскольку вы каким-то образом кодируете теги, я предполагаю, что у вас есть предопределенный набор всех возможных тегов? Если это так, сколько тэгов? – Tonci

+0

И почему бы не сохранить их в таблице files_to_tags ?. –

+0

Создайте одну таблицу для хранения всех тегов, причем каждый тег имеет уникальный идентификатор.Создайте еще одну таблицу, которая создаст одну запись для каждой комбинации файла и тега, используя идентификатор файла и идентификатор тега. Таким образом, вы можете получить все файлы для одного или нескольких тегов или всех тегов для одного файла. – Tim

ответ

1

Это хороший пример для столика моста. Допустим, у вас есть в вашей базе данных:

file_info 
--------- 
file_id 
author 
create_date 

tag_info 
-------- 
tag_id 
tag_name 

tag_id является суррогатным ключом, и будет уникальным, увеличивающееся значением для каждого нового тега. Так что, может выглядеть следующим образом:

tag_id tag_name 
------ -------- 
    1 Apples 
    2 Pears 
    3 Peaches 

Вы затем создать мост, который связывает файлы с действующими тегами:

file_tag_bridge 
--------------- 
file_id 
tag_id 

Сочетание file_id/tag_id будет уникальным в таблице (это составной ключ), но данный файл_ид может быть связан с несколькими (разными) тегами_ид и наоборот.

Вы будете иметь одну строку в этой таблице для каждого тега, связанного с файлом:

file_id tag_id 
------- ------ 
     1  1 
     2  2 
     2  3 

В этом случае, файл 1 связан с Apples тегом; файл 2 связан с Pears и Peaches. Файл 3 не связан ни с какими-либо тегами, поэтому он не представлен в таблице моста.

+0

Спасибо, это мне очень помогло! – sh3rifme

Смежные вопросы