Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите решить задачу  [new]
Rupert
Member

Откуда:
Сообщений: 2
Дана таблица, в которую попадают комментарии пользователей. Комментарии могут дублироваться. Необходимо предложить варианты по предотвращению попадания дублей.
8 фев 15, 16:04    [17234873]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Добрый Э - Эх
Guest
Rupert,

ограничение уникальности не предлагать?
8 фев 15, 16:09    [17234878]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Rupert
Member

Откуда:
Сообщений: 2
Добрый Э - Эх,

нет
8 фев 15, 16:20    [17234889]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Klemzig
Guest
Rupert,

Вставлять записи строго в один поток, перед каждой вставкой проверять на дубликат. Сериализовать можно, как вариант, посредством Service Broker.

Работать будет примерно как шуруп, забитый отверткой.
9 фев 15, 05:30    [17236112]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rupert
нет

Молиться на отсутствие дублей тоже не предлагать ?
9 фев 15, 09:42    [17236555]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Jaffar
Member

Откуда:
Сообщений: 633
Сделать предварительную табличку и сваливать комментарии в нее,
и 1 раз в Х секунд, делать вставку в основную табличку по distinct`у.

insert into T1(Comm)
select distinct Comm 
from T_tmp.

delete from t_tmp.
9 фев 15, 09:47    [17236594]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Добрый Э - Эх
Guest
Jaffar,

вставка новых записей никак не проверяет наличие в таблице-приемнике таких же данных. в итоге - в таблице-приемнике могут возникнуть дубли. чего автор топика как раз и хочет избежать
9 фев 15, 09:52    [17236642]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
TempFox
Guest
Возможно, требуется триггер на вставку/изменение.
9 фев 15, 09:53    [17236665]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Jaffar
Member

Откуда:
Сообщений: 633
Добрый Э - Эх
Jaffar,

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



ну а написать where not exists?
Я думаю что до этого уж автор сам бы допер, может ему еще и create table написать? и begin tran и рассмотреть ситуацию когда между вставкой в основную таблицу и удалением из нее туда еще кто-нить записей накидает и что делать чтобы ЭТИ накиданные не пропали?

очевидно жеж все.
9 фев 15, 10:16    [17236847]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Добрый Э - Эх
Guest
Jaffar,

если бы для автора топика всё было бы очевидно, то, очевидно, этого топика просто не было бы...
9 фев 15, 11:27    [17237262]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
Единственный вариант - справочник комментариев. Других способов предотвращения нарушения атомарности нет.
9 фев 15, 11:57    [17237497]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
хмхмхм
Guest
Rupert,

Почему ограничение на уникальность не подходит?

Могу предложить Instead of trigger, в котором будет проверка и отбраковка записей-дублей.
9 фев 15, 12:32    [17237829]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
хмхмхм, потому, что "классный камент" и "камент классный" логически одно и то же, но математически - разные выражения.
9 фев 15, 12:55    [17238015]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
хмхмхм
Guest
Владислав Колосов,

в таком случае могу предложить разбиение комментария на слова и вычисления checksum() из этих слов (предварительно отсортированных). И сохранять этот checksum + уникальное ограничение на этот столбец.
9 фев 15, 14:23    [17238628]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
o-o
Guest
хмхмхм
в таком случае могу предложить разбиение комментария на слова и вычисления checksum() из этих слов (предварительно отсортированных). И сохранять этот checksum + уникальное ограничение на этот столбец.

некоторые комментаторы могут пробел пропустить, ну, вякое же бывает, и тогда и на слова-то не поделите.
а уж про грамотность вовсе молчу, когда вариантов написания одного и того же со слуха...киш мышь, короче

мораль: делать уникальность на полное совпадение,
а остальные претензии отмести как "нереальные требования" :)
9 фев 15, 14:53    [17238847]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Rupert
Добрый Э - Эх,

нет


почему? что мешает?
9 фев 15, 14:56    [17238885]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
ROLpogo
Member

Откуда: Реутов
Сообщений: 219
Автор предлагает самим додумать все условия задачи? Под дублированием понимается дубль подряд идущих записей или во всей таблице? Т.е. если я ответил кому-то "Нет", то больше никогда не смогу сказать "Нет"?
9 фев 15, 15:03    [17238946]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
o-o
Guest
ROLpogo,

шикарно :)
это такой новый способ заставить всех желающих повторно ответить
использовать синонимы, образные выражения или вовсе другие языки.
или каждый раз ник себе менять, но так, чтоб все тебя снова узнали.
короче, развивалка фантазии
9 фев 15, 15:09    [17238996]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
хмхмхм
Guest
o-o
хмхмхм
в таком случае могу предложить разбиение комментария на слова и вычисления checksum() из этих слов (предварительно отсортированных). И сохранять этот checksum + уникальное ограничение на этот столбец.

некоторые комментаторы могут пробел пропустить, ну, вякое же бывает, и тогда и на слова-то не поделите.
а уж про грамотность вовсе молчу, когда вариантов написания одного и того же со слуха...киш мышь, короче


Об этом я тоже подумал, но это уже за гранью добра и зла. Так и анализатор текста можно написать. И главное SQL тут совершенно не причем :)
9 фев 15, 15:25    [17239078]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
o-o
Guest
хмхмхм
Об этом я тоже подумал, но это уже за гранью добра и зла. Так и анализатор текста можно написать. И главное SQL тут совершенно не причем :)

вот я про что :)
совершенно по секрету и абсолютно без задних мыслей: "ни при чем"
9 фев 15, 15:38    [17239170]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Klemzig
Guest
o-o
ни при чем
Не при чем, абсолютно.
10 фев 15, 03:56    [17241833]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
o-o
Guest
Klemzig
o-o
ни при чем
Не при чем, абсолютно.

исчО "непричОм" позабыли
но для интересующихся -- выдержка из СЛОВАРЯ ТРУДНОСТЕЙ РУССКОГО ЯЗЫКА

К сообщению приложен файл. Размер - 35Kb
10 фев 15, 23:06    [17247298]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачу  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Модератор: Так, сворачиваем филологический кружок.
11 фев 15, 00:38    [17247513]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить