Я понимаю, почему вы задаете этот интересный вопрос. Если тестер вводит список ключевых слов, а вы используете представление информационной схемы для получения списка совпадающих столбцов, то существует опасность того, что будет много ложных совпадений, которые могут привести к пустой трате времени или привести к тому, что тестер введет неверную информацию. в вашу систему. Вы хотите знать, как определить, какие столбцы лучше всего соответствуют запросу тестировщика. Но вы хотите, чтобы это было просто, потому что это всего лишь временный обходной путь, это не ваше основное приложение.
Ответ заключается в дополнении результатов поиска с помощью системы, основанной на репутации. Вот очень простой, который должен хорошо работать для вашего приложения.
Сначала создайте две простые таблицы для хранения рейтинговой информации для таблиц и столбцов в вашей базе данных. Вот начальная структура.
TEST_SEARCH_TABLES:
TABLE_ID
TABLE_NAME
RATING
TEST_SEARCH_COLUMNS:
COLUMN_ID
TABLE_ID
COLUMN_NAME
RATING
Заполните TEST_SEARCH_TABLES именем каждой таблицы в вашей базе данных. Заполните TEST_SEARCH_COLUMNS именем каждого столбца и свяжите его с соответствующей таблицей. Инициализируйте все столбцы РЕЙТИНГА значением 1000.0 — вы будете использовать Систему рейтинга Эло чтобы дополнить ваш рейтинг, потому что он прост, легко реализуем и отлично работает.
Когда пользователь вводит список ключевых слов, не используйте представление информационной схемы. Вместо этого выполните поиск в таблице TEST_SEARCH_COLUMNS любых столбцов, содержащих любое из этих ключевых слов. Назначьте каждому столбцу ВЕС в зависимости от количества обращений. (Например, если поиск «клиент, сумма, доход», тогда столбец CUSTOMER_ID будет иметь вес 1. Столбец CUSTOMER_INCOME будет иметь вес 2, а CUSTOMER_INCOME_AMOUNT будет иметь вес 3.) Вычислите WEIGHT каждая таблица как сумма весов ее столбцов.
Теперь для каждой таблицы и столбца, возвращенных вашим поиском, умножьте ВЕС на РЕЙТИНГ, чтобы определить ЦЕННОСТЬ ПОИСКА. Дайте тестеру список совпадающих таблиц в порядке убывания значения поиска. В каждой таблице также перечислите столбцы в порядке убывания их поискового значения.
Каждый раз, когда таблица или столбец появляются в результатах поиска, используйте рейтинговую систему Эло, чтобы присвоить ей ВЫИГРЫШ над соперником с рейтингом 1000,0. Каждый раз, когда пользователь выбирает столбец для работы, дайте этому столбцу и его таблице победу над противником с рейтингом 1500,0. Таким образом, наиболее полезные и успешные таблицы и столбцы со временем будут органично всплывать в верхней части ваших списков поиска.
Дополнительным преимуществом этого подхода (с использованием таблиц вместо представления информационной схемы) является то, что этот подход является более расширяемым. В качестве улучшения вы можете поместить столбцы DESCRIPTION и COMMENTS в таблицы TEST_SEARCH_TABLES и TEST_SEARCH_COLUMNS, а также искать в этих столбцах совпадения ключевых слов.
Вот еще одно необязательное улучшение — вы можете поместить кнопки (+) и (-) рядом с каждой таблицей и столбцом и дать ему победу над противником с рейтингом 2000, если пользователь нажмет (+), и проигрыш против игрока с нулевым рейтингом. противника, если пользователь нажмет (-). Это позволит вашим тестировщикам голосовать за столбцы, которые они считают важными, и против столбцов, которые всегда мешают.
person
Community
schedule
11.12.2012
INFORMATION_SCHEMA.COLUMNS
очевидно, как получить информация вам нужна? Хотяsys.columns
обычно предпочтительнее, поскольку «родное» представление метаданных, которое предоставляет больше информации, чем INFORMATION_SCHEMA. - person Pondlife   schedule 26.11.2012