Шаблон соответствия для реляционной базы данных - PullRequest
2 голосов
/ 21 февраля 2010

Я пытаюсь сделать следующее: Мы пытаемся разработать систему обнаружения мошенничества для фондового рынка. Я знаю Спецификацию для мошенничества (они похожи на шаблоны). поэтому я хочу знать, могу ли я разработать шаблон и найти все записи, соответствующие этому шаблону.


Примечание: Я не могу использовать традиционные запросы, потому что шаблоны сложны например, один из моих мошенников - круговая торговля, это так: A купил у B, B купил у C, C купил у A (это цикл) и этот цикл может включать 4 или 5 человек.

есть ли хорошее предложение для этой ситуации.

Ответы [ 3 ]

0 голосов
/ 21 февраля 2010

Я не понимаю, почему вы не можете использовать «традиционные запросы», как вы заявили. SQL может использоваться для написания чрезвычайно сложных запросов. В этом отношении я не уверен, что это чрезвычайно сложный вопрос.

Во-первых, я бы посмотрел на поведение, которое вы описали, как на переменную транзакцию, поэтому я рассматриваю транзакции как модель. Скорее всего, у меня будет таблица transactions с некоторыми столбцами, такими как buyer, seller, amount и т. Д. *

В качестве альтернативы вы можете иметь shares в качестве своей собственной таблицы и хранить, скажем, предыдущие 100 владельцев этой доли в той же таблице, используя STI (Single Table Inheritance), покупая все первичные ключи владельцев в «владельцев» столбец в вашей таблице shares, такой как 234/823/12334/1234/..., чтобы вы могли выполнять сложные запросы и видеть, принадлежал ли этот общий ресурс одному и тому же человеку или действительно легко и быстро искать шаблоны в строке.

- обновление -

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

Мой лучший совет - откройте вашу IDE (палец вверх для TextMate) и выберите свой любимый язык (в моем случае Ruby). Найдите пример данных, создайте базу данных и начните писать код! Вы не ошибетесь, пытаясь экспериментировать подобным образом, это полностью откроет лучшие способы сделать это, чем мы можем придумать здесь, на Stackoverflow.

0 голосов
/ 22 февраля 2010

Определенно Data Mining.Но, как вы указали, у вас уже есть модели (ваши шаблоны).Ищите мошенничество DETECTION, а не предотвращение для улучшения результатов поиска?

Я знаю, что некоторые банки используют SPSS PASW Modeler для обнаружения мошенничества.Это очень интуитивно понятно, и вы можете видеть, что вы делаете, играя с данными.Таким образом, вы можете реализовать свои шаблоны.Я согласен с Джозефом, вам нужно поиграть, создать новые структуры данных.

Может быть, модель временного ряда?

0 голосов
/ 21 февраля 2010

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

Как и большинство решений, это можно рассматривать как слайдер: с одной стороны, существует «полный язык обнаружения мошенничества», с другой, вы можете просто создать хранимые процедуры для наиболее распространенных случаев и написать новые хранимые процедуры, которые используйте более «базовые» блоки, которые вы написали ранее, для реализации различных шаблонов.

То, что вы пытаетесь сделать, попадает под зонтик Data Mining, так что вы также можете попытаться узнать больше об этом: возможно, вы можете найти пакет Data Mining для вашей конкретной БД (вы не указали) и посмотреть, если он поможет вам найти общие шаблоны в ваших данных.

...