свой collation?

вводятчохотят!
Дата: 13.02.2013 10:32:48
Есть наверное классическая проблема - юзеры вводят наименования в базы данных (кои потом совмещаются), постоянно путая русские буквы с латинскими, доходит до смешного - в текстовом поле половина букв русские, половина латинские, некоторые даже умудряются заменять буквы цифрами - в общем, полный 1337 5p3АI< :) Естественно, потом у других юзеров возникают проблемы с поиском того, что навводили первые. Вариантов "что с этим делать" я придумал два, и оба какие-то кривые:
1. создать свой collation чисто для этого поля - но тут вопрос, позволяет ли вообще mssql создавать такое?
2. вычисляемое поле, в котором заранее сделаны все возможные замены. Для своего софта это было бы приемлимо, а вот для стороннего - запросы на поиск не изменишь, увы.
Есть ли ещё варианты, как это решить?
Glory
Дата: 13.02.2013 10:35:21
вводятчохотят!
Вариантов "что с этим делать" я придумал два, и оба какие-то кривые:

Сделать CHECK constrаint на поле и предотвратить занесение неправильных данных.
вводятчохотят!
Дата: 13.02.2013 10:41:17
Glory,
так данные-то все правильные! Возможны и русские символы, и латинские, нельзя это описать простым констрейнтом. Те же номенклатуры электронных компонентов например - наши обозначаются кириллицей, импортные латиницей. Но ведь можно набрать кириллическое обозначение и латинскими символами, если постараться.
Glory
Дата: 13.02.2013 10:48:57
вводятчохотят!
Glory,
так данные-то все правильные!

Если данные правильные, почему тогда "Естественно, потом у других юзеров возникают проблемы с поиском того, что навводили первые." ?
Если кто-то не может найти _правильные_ данные, то наверное этот кто-то задает неправильные критерии поиска
вводятчохотят!
Дата: 13.02.2013 10:55:37
Glory,
я немного неправильно выразился. Они неправильные, но в общем виде правилами не описываются.
Вот например возьмём да и введём в гугл слово "микросхема", в автозаполнении сразу будут варианты "к155ла3" и "tda2030a". (я просто не силён в номенклатуре этой электронной). Как видно, в первом случае можно вместо кириллической К использовать латинскую, а во втором - вместо латинской А нашу. Констрейнтом это не отловишь.
Glory
Дата: 13.02.2013 10:59:28
вводятчохотят!
Они неправильные, но в общем виде правилами не описываются.

Ну так опишите их.
И заставьте следовать им.
вводятчохотят!
Как видно, в первом случае можно вместо кириллической К использовать латинскую, а во втором - вместо латинской А нашу.

Откуда это "видно" ?
Любая номенклатура стандартизирована. В ней не может быть то, что вы описываете
А гугл просто хранит историю того, что вводили пользователи.
вводятчохотят!
Дата: 13.02.2013 11:07:23
Ну так опишите их.
И заставьте следовать им.

Административный путь тут сложен, ибо не все в этой цепочке подчиняются единому начальству. Но вообще он тут идеален, да.

Откуда это "видно" ?

Из шрифтов, вот две буковки: К и K :)

Любая номенклатура стандартизирована. В ней не может быть то, что вы описываете

В том-то и проблема, что они эту номенклатуру и вводят. А другие потом её ищут.
Glory
Дата: 13.02.2013 11:12:08
вводятчохотят!
Административный путь тут сложен,

Это называется проектирование, а не администрирование

вводятчохотят!
В том-то и проблема, что они эту номенклатуру и вводят. А другие потом её ищут.

И что мешает программно запретить ввод неправильных данных ?

вводятчохотят!
Из шрифтов, вот две буковки: К и K :)

Откуда видно, что номенклатура "к155ла3" _разрешает_ использование к и k ?
вводятчохотят!
Дата: 13.02.2013 11:15:10
Откуда видно, что номенклатура "к155ла3" _разрешает_ использование к и k ?

Кроме микросхем, в той же таблице в тех же полях лежат: резисторы, картриджи для принтера, тяжелые металлы, винты с болтами, тракторы "беларусь" и прочее. Матценности. Как правильно описать номенклатуру всего этого в констрейнте?
Glory
Дата: 13.02.2013 11:22:50
вводятчохотят!
Кроме микросхем, в той же таблице в тех же полях лежат: резисторы, картриджи для принтера, тяжелые металлы, винты с болтами, тракторы "беларусь" и прочее. Матценности.

И поэтому мы блин сделаем одного текстовое блоб поле.
И пускай пользователи фигарят туда все, что пожелают.
А мы потом напишем супер-пупер умный робот, который будет весь этот навоз разгребать.

вводятчохотят!
Как правильно описать номенклатуру всего этого в констрейнте?

Как правильно проектировать схему данных ???
Сначала учатся - теория баз данных там, основы проектирования.
Потом собирают требования заказчика, формализуются, определюятся стандарты
Потом пишется ТЗ.
Потом программист создает код.