Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как организовать структуру 
V
    Опции темы
Samotnik
Дата 17.3.2013, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



Привет. 

Ситуация:
Предположим есть сервис с объявлениями. Т.е. человек логиниться, заполняет форму и оставляет объявление на портале. Это объявление сперва проходит модерацию, затем только отображается на портале. Через какое-то время пользователь редактирует объявление, которое перед публикацией опять должно пройти модерацию и так может продолжаться до бесконечности с любым объявлением, пользователь его может редактировать неограниченное кол-во раз. Но при этом оно сразу не отображается на портале, а будет показано только после прохождения модерации. 
В этом и загвоздка, что когда юзер подал объявление и оно прошло модерацию, на портале всегда нужно показывать объявление, которое было последним прошедшим модерацию. Т.е. если юзер его отредактировал, оно все равно должно показываться, но должен показываться предыдущий промодерированный вариант.

Вопрос в этом и заключается, как лучше всего хранить в БД объявление и версию, которую нужно отобрадать напортале и ту версию, которая ждет модерацию? 
 smile 
PM MAIL   Вверх
Akina
Дата 17.3.2013, 21:04 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Две (три, более) записи в БД. Все - с одним и тем же номером объявления. Версия, не прошедшая модерацию, имеет NULL в поле даты модерации. Показывается версия, имеющая максимальную дату модерации среди всех с таким номером.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Samotnik
Дата 17.3.2013, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



Ну это впринципе стандартный подход, который крутился у меня в головею. Думал может другой вариант какой-нибудь есть. Этот кажется мне каким-то простым. smile 
Но спасибо в любом случае.
PM MAIL   Вверх
Zloxa
Дата 18.3.2013, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(Akina @ 17.3.2013,  22:04)
Две (три, более) записи в БД. Все - с одним и тем же номером объявления. Версия, не прошедшая модерацию, имеет NULL в поле даты модерации. Показывается версия, имеющая максимальную дату модерации среди всех с таким номером.

Мне не нравится. smile
Тут ведь нагурзка по чтению многократ превышает нагрузку по модификации.

Я бы организовал обособленную очередь модерации. И модераторам проще будет выбрать не отмодерированные сообщения и дополнительная нагрузка по вычислению актуальной версии при отображении уходит, на витрине всегда актуальная отмодерированная версия ибо. Логика постановки сообщения в очередь лишь усложняется.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 18.3.2013, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Ну сколько там может быть последовательных копий объявления? десяток? два? к тому же не факт, что их все необходимо хранить, что нужна вся история правки от рождения до смерти и после... так что при наличии индекса (НомерОбъявления - ДатаМодерации) выборка будет ненамного накладнее, если кроме установленных дат там будут ещё и NULL-даты. По-моему, очередь модерации, с переносом зааппрувленных объявлений в публикации - неоправданное усложнение. А ведь ещё есть вариант редактирования незааппрувленного сообщения.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 18.3.2013, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Akina, выбери из своей структуры все сообещния, подлежащие модерации.

Цитата(Akina @  18.3.2013,  16:16 Найти цитируемый пост)
ненамного накладнее,

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

Это сообщение отредактировал(а) Zloxa - 18.3.2013, 15:22


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 18.3.2013, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Цитата(Zloxa @  18.3.2013,  16:22 Найти цитируемый пост)
выбери из своей структуры все сообещния, подлежащие модерации.

Если ВСЕ - то индекс по дате аппрува и select * from adverts where dtApproved is null ... а что?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 18.3.2013, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(Akina @  18.3.2013,  16:49 Найти цитируемый пост)
select * from adverts where dtApproved is null 

Маська использует индекс по is null?

Оракл, в общем случае - нет.

Добавлено через 2 минуты и 20 секунд
У нас есть 100500 сообщений, из них не модерировано 100.
Индекс по 100400 значениям нам не нужен


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 18.3.2013, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Цитата(Zloxa @  18.3.2013,  16:59 Найти цитируемый пост)
Маська использует индекс по is null?

Цитата

MySQL can perform the same optimization on col_name IS NULL that it can use for col_name = constant_value. For example, MySQL can use indexes and ranges to search for NULL with IS NULL. 

Examples: 

Код

SELECT * FROM tbl_name WHERE key_col IS NULL;

SELECT * FROM tbl_name WHERE key_col <=> NULL;

SELECT * FROM tbl_name
  WHERE key_col=const1 OR key_col=const2 OR key_col IS NULL;

If a WHERE clause includes a col_name IS NULL condition for a column that is declared as NOT NULL, that expression is optimized away. This optimization does not occur in cases when the column might produce NULL anyway; for example, if it comes from a table on the right side of a LEFT JOIN. 

MySQL can also optimize the combination col_name = expr OR col_name IS NULL, a form that is common in resolved subqueries. EXPLAIN shows ref_or_null when this optimization is used. 

This optimization can handle one IS NULL for any key part. 



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 18.3.2013, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(Akina @  18.3.2013,  19:32 Найти цитируемый пост)
<=>

а щтойта?

верна ли догадка что выражение (a<=>b) эквивалентно (a=b or a is null and b is null)?

Это сообщение отредактировал(а) Zloxa - 18.3.2013, 19:00


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 18.3.2013, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Цитата

<=> 

NULL-safe equal. This operator performs an equality comparison like the = operator, but returns 1 rather than NULL if both operands are NULL, and 0 rather than NULL if one operand is NULL. 



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Samotnik
Дата 18.3.2013, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



ребята, вы отдалились smile
а что делать со связанными таблицами? тоже все дублировать? ))

Это сообщение отредактировал(а) Samotnik - 18.3.2013, 23:19
PM MAIL   Вверх
Akina
Дата 19.3.2013, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Цитата(Samotnik @  18.3.2013,  23:24 Найти цитируемый пост)
что делать со связанными таблицами? тоже все дублировать?

Какими связанными таблицами? почему - дублировать?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Samotnik
Дата 19.3.2013, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



ну объявление хранится ни в одной таблице, а в трех. Основная часть инфы конечно же в одной, но есть некоторая инфа, например адресс, город,Ю которые хранятся в друних таблицах по связям
PM MAIL   Вверх
Akina
Дата 19.3.2013, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



и что?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0810 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.