как устроить алгоритм PHP

Статус
В этой теме нельзя размещать новые ответы.

ivankremlin

Постоялец
Регистрация
25 Сен 2009
Сообщения
68
Реакции
2
Есть глоссарий. У определения будет автор, должность, фото и само определение. Т.е. все данные про определение и пользователя в разных полях (имя отдельно, должность тоже, фото тоже и т.п.) Возникают ситуации, что появляются дополнения к существующему определению от других авторов. Как можно более правильно сделать это, автоматизировать?
Как вариант, который я и вижу, редактировать описание, где будет вставляться как в новостях фото, должность, автор, описание. Ниже второе, третье и т.д.
Если заменять, то тоже некорректно, т.к. два определения более правильно и полноценно отражают суть. Убрать старое - тоже не выход (если старое актуально).
 
Я бы делал так: мухи отдельно, котлеты отдельно.
Т.е. имеем таблицу авторов, таблицу терминов, и таблицу определений. У всех есть свой айди. И, еще одну таблицу, связей. Где указывалось бы айди автора, айди термина, и ид определения. Т.е. автор - Иванов, ид=1, термин - www, ид=1, значение world wide web, ид=1. И в таблице связей - 3 поля.

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

Как-то так.
 
вроде все понятно и ничего не понятно. ПОлучается, что определение может быть пустым. Нужно сначала его создать, потом определение привязать к нему и еще потом автора к нему же. Муторно. И как это все в админке будет гулять? Не понимаю....
вот пример:
а вот один автор:
 
Так а в чем проблема? Сортируй по дате добавления в базу и всего делов. Будут у тебя несколько определений на одно слово, а скрипт, который их выводит - что-то типа glossary.php?word=электричество.

Если не хочешь со словами - заведи еще parent у всех "вторичных" записей, и при добавлении нового описания тогда смотри - если слова такого в базе еще нет - то просто добавляем, если есть - узнаем его id и дописываем себе. И тогда по glossary.php?id=21 мы выводим сначала запись с id=21, а потом всех "последователей". Тоже отсортированых по дате.

Virtual, конечно, дело говорит, но затрахаешься ты с такой базой по самое небалуйся. Я за то чтоб все в одной таблице держать, а если надо там по автору вызвать - запускать glossary.php?author=Эдуард_Михайлов или там glossary_php?date=2008-01-21

Так в сто раз проще все, хоть и "некошерно".

Будет нужна авторизация на сайте - заведешь отдельно табличку users(id,имя,должность,фото) и соберешь их всех из глоссария туда, а в глоссарий соответственно users_id вставишь на их место. Тогда уже при выводе на экран JOIN придется делать, что тоже в принципе само по себе не проблема, пока записей не много. Тоже, короче, ничего сложного.

Отдельно выносить еще и words от описания - ну не знаю. Тоже можно, но мне было бы лень, я бы все в одну таблицу запихнул и не парился. Все равно в вебдеве никто базы в третьей НФ не держит. Не потому что не умеет нормализировать, и не для того чтобы позлить препода по СУБД, а просто жизнь такая, увы.
 
ну а, если слово есть уже такое и определение... Автор его дополняет. Как тогда в этом случае добавить определение и автора с его данными, как в примере?
 
А блин. Теперь понятен вопрос. :) Оно ведь уже все реализовано. Гуд. В случае дополнения другим автором - я так понял, выглядеть должно примерно как в жж треды, так? :)
тогда, просто у записи, я бы сделал одно дополнительное поле.. :) У каждой строки есть свой айди, так? вот и сделал бы поле - парент.
Тоесть, имеем определение 1 автор - Вася, айди у него 15, парент=0. все красиво выводится. Затем, Петя хочет дополнить именно это опредедение. Создает новое, и т.к. он дополняет Васино определение - автоматом вставляется парент=15, и получается новое определение, у которого айди=23.
Так же, Коля хочет дополнить Петино определение - создает новое, и уже автоматом парент становится 23...

Можно подумать, и сделать более оптимально, в плане работы с базой - возможно добавить дополнительные поля, по которым оптимально и быстро все вытаскивать.
А если сам автор дополняет свое же определение - то просто редактировать уже существующую запись. Либо, дать возможность выбора автору. Отредактировать, или дополнить, создав новое определение, и в качестве парента - указав первое определение. В таком случае, при выводе - проверять авторов. Если идет несколько определений подряд - и автор один - то выводить автора только 1 раз.
 
Во-во, а я предлагаю сделать ключ по слову, и проблема отпадет сама собой. :) Запросили определения такого-то слова - выводим в порядке даты все, которые нашли. Их там хоть один, хоть сто, у всех в поле word стоит наше слово, определениями которого они являются. Проще некуда.
 
С датой - не получится. :)
Ибо, в условии: "Возникают ситуации, что появляются дополнения к существующему определению от других авторов."

Тоесть, есть термин, и 3 определения от трех авторов. С датой, все дела. Затем, появляется четвертый автор, который желает дополнить первое определение. Если использовать только дату - то это определение будет четвертым. А должно быть - вторым. :) Не взирая на то, что появилось последним.. Т.к. оно дополняет первое.
В таком случае, кроме как с парентами - других вариантов я особо и не вижу.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху