2009-05-17 4 views
0

Я пишу онлайн-трекер ресурсов проекта, но я новичок в MySQL. Каким будет лучший способ отслеживания проектов, пользователей и активов для чего-то подобного? У меня есть 3 таблицы для активов, пользователей и проектов. Пользователи должны иметь проекты и активы. Активы могут быть членами нескольких проектов, и проекты должны быть доступны для нескольких пользователей.Лучшая практика для иерархического отслеживания активов MySQL

Первый метод, который, как я полагал, будет иметь поле среднего текста для каждого проекта с идентификатором для каждого актива, с которым он связан. У каждого актива также будет средний текст, который будет иметь каждый идентификатор проекта, с которым он связан. Это проблема, поскольку, поскольку я не могу выполнить поиск без необходимости анализировать текст, чтобы узнать, какие проекты/активы он прикрепляет.

Другим решением без синтаксического анализа было бы иметь отдельные таблицы для информации связывания, поэтому, например, была бы таблица активов с идентификатором ресурса, идентификатором проекта и идентификатором пользователя, который является частью, и если он будет назначен другому проекта или пользователя, будет другая запись в эту таблицу. Однако это решение будет иметь активы, имеющие несколько записей.

Другой способ сделать это - создать сайт для создания таблицы при создании проекта и хранить информацию об активах и пользователях. Так как могут быть тысячи проектов, это очень быстро увеличит базу данных, и, насколько мне известно, создание MySQL на MySQL больше, чем записей.

Я склоняюсь к второму решению. Есть ли кто-нибудь, кто знает лучший способ?

+1

Ваше имя вопроса имеет дело с иерархическими данными (это очень сложная тема), но я не вижу в тексте вашего вопроса нигде ... –

ответ

2

Цитата:

имеют MEDIUMTEXT поле на каждом проекта с идентификатором для каждого актива , что это связано с

Это худший дизайн ... может быть когда-нибудь! Читайте дальше: database relations. Возьмите чрезвычайную ситуацию crash course. Посмотрите на некоторые example databases; У MS Access есть довольно приличные шаблоны, которые вы могли бы изучить.

То, что вы описали, похоже, может быть смоделированы с этими отношениями:

project --- inf:inf --- users 
    asset --- 1:1  --- users 
    asset --- inf:inf --- projects 

Много-ко-многим отношения будут идти в отдельной таблице.

+0

Спасибо за ссылки. Именно такую ​​информацию я искал. – David

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