2009-03-09 1 views
1

Как вы справляетесь с настоящими конфликтами имен? Существует ли установленная передовая практика или шаблон дизайна пользовательского интерфейса для устранения неоднозначности таких записей? Если у авторов может быть много статей, но более одного автора могут иметь одно и то же имя, как бы вы разрешили пользователям выбирать автора, которого они действительно хотят при создании статей?Рекомендации по настройке Rails - Как вы обрабатываете уникальных пользователей, которые могут иметь одинаковые записи?

Я не могу диктовать имена авторов уникальными. У авторов может быть какая-то другая информация, которая могла бы индивидуализировать их (их статьи или другие необязательные поля).

Чтобы сделать это понятным - пользователи не являются авторами. Пользователи - это люди, вводящие информацию об авторах и статьях. Единственная гарантированная информация для автора - это имя автора. Другие детали являются необязательными.

Так что, если пользователь создает новую запись для статьи, им придется либо выбрать, либо создать автора для отношений «многие ко многим» между авторами & статей.

С недвусмысленными рельсами, такими как раскрывающийся список категории сообщений в блоге, как rayan bates использует в своих railscasts, его легко создать или обновить. Если он существует, ссылку на сообщение в блоге, если оно не создаст и не свяжет сообщение блога с ним.

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

+0

Это действительно вопрос о дизайне базы данных. –

+0

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

+0

Я бы согласился с ответом гленатрона. –

ответ

4

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

Возможно, вам нужно попросить ваших авторов краткое описание себя в своем профиле, которое вы можете использовать, чтобы устранить их на своих условиях. В качестве альтернативы в зависимости от типа статьи вы можете описать их с точки зрения географии («Джон Биггс, Флорида», «Джон Биггс, Калифорния») или, возможно, по предметным областям, которые они предпочитают писать: «Джон Биггс, эксперт по Java »,« Джон Биггс, специалист Индонезии »и т. Д.

У вас может быть просто «Джон Биггс (1)», «Джон Биггс (2)» и т. Д. Кажется, я помню, что это хорошо работает для IMDB, которые являются хорошим примером сайта, которому пришлось сортировать эту проблему.

Важны в практичности, где обеспокоены эти типы вещи консистенции - нужно всегда определить ваши автор таким же образом, так что вы не имеете «Джон Биггс, Флориду» и «Джон Биггс (2) », и вам нужно убедиться, что личность, которую вы даете автору, не изменяется после ее настройки, поэтому« Джон Биггс (2) «никогда не становится« Джоном Биггсом (5) », и ваши пользователи могут идентифицировать их всякий раз они видят неоднозначное имя как того человека, который ранее имел это имя.

0

У вас нет! Имена - это плохой метод идентификации, который вы узнаете. У вас есть несколько способов:

Добавить уникальный идентификатор с обычными пользователями, это будет имя пользователя, чтобы проверить уникальность. В вашем случае может потребоваться описанный выше метод name (1), если у вас действительно нет другой информации, кроме имени.

В качестве альтернативы можно использовать несколько атрибутов, чтобы сделать составной ключ (например, имя + DOB)

2

Одна вещь, которая работала для меня на прошлом проекте, чтобы иметь текстовое окно, в котором пользователь может ввести в авторское имя.Когда они печатаются, я обновляю div с возможными совпадениями - подобно Stack Overflow при вводе тега в игнорируемом или интересном поле.

Пользователи могут нажимать на имя в div, которое открывает запись в новом окне - в новом окне есть кнопка «выберите этого автора», которая возвращает вас на исходную страницу с этим автором в текстовом поле как Author Имя (id).

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

Я предполагаю, что вам нужно что-то более упорядоченное, если это приложение типа ввода данных, но в этом проекте добавление автора было редкой операцией.

1

Несколько вещей, о которых нужно подумать: Можете ли вы сначала фильтровать предмет? Например, если Джон Джонс (John Jones) пишет статьи о генетике, а Джон Джонс (John Jones, 2) пишет статьи об компьютерной сети, bu сначала выбирает общее субэлементное вещество, вы можете отфильтровать многие из менее применимых возможных дубликатов имена. (я бы, однако, имел кнопку, чтобы увидеть нефильтрованный список, потому что иногда люди пишут об этом в новом предмете). Если вы не хотите ограничивать выбор, возможно, сортировка по предмету или местоположению может облегчить поиск нужного.

Когда вы показываете список возможных дубликатов имен, покажите общую информацию об авторе, включая адрес и университетскую принадлежность и, возможно, название одной статьи. Нажимайте кнопку, чтобы показывать существующие статьи для любого из них. Таким образом, если вы знаете, что Джон Джонс, которого вы хотите, находится в FL, вам нужно всего лишь проверить три в Fl для статей не все. Джон Джонс, написавший статьи о генетике.

Помните, что пользователи часто ленивы, они скорее просто вставляют новое имя, чем выбирают из длинного списка существующих имен. Поэтому сложнее вставить новое имя, чем выбрать его. Сначала они должны пройти процесс выбора, прежде чем они смогут ввести новое имя. У нас есть приложение, которое даже не показывает кнопку для добавления нового человека до тех пор, пока вы не выполните поиск. Поскольку имена могут иметь вариации, если вы хотите использовать нечеткую логику для своего поиска. Возможно, вам захочется показать Дж. Джонса, Джонни Джонса и Джона Джонса, а также Джона Джонса в ваших результатах выбора.

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

+0

«Неужели нужно убедиться, что статьи приписаны правильному Джону Джонсу, если вы действительно ничего не знаете об авторе, кроме его имени?» Это важно. – srboisvert

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