Лучшие практики для иерархического отслеживания активов MySQL - PullRequest
0 голосов
/ 18 мая 2009

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

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

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

Еще один способ сделать это - создать сайт при создании проекта, который будет хранить актив и пользовательскую информацию. Поскольку может быть тысячи проектов, это довольно быстро приведет к переполнению базы данных, и, насколько я знаю, создание таблиц в MySQL тяжелее, чем записей.

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

1 Ответ

2 голосов
/ 18 мая 2009

Цитата:

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

Это худший дизайн ... возможно, когда-либо! Читайте о отношениях с базой данных . Пройти экстренный курс ускоренный . Посмотрите на некоторые примеры баз данных ; В MS Access есть несколько неплохих шаблонов, которые вы можете изучить.

То, что вы описываете, похоже, может быть смоделировано с помощью следующих отношений:

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

Отношения «многие ко многим» будут помещены в отдельную таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...