:: urbansheep (urbansheep) wrote,
:: urbansheep
urbansheep

Category:
  • Music:

[ utx ] Спецсимволы в названиях категорий, или избегание неоднозначности

Сейчас в названии категории может быть использовано подчёркивание или тире, как правило — для разделения слов. А может и не быть использовано, тогда слова разделяются через ВерблюжийРегистр — склеивая слова, и первую букву приклеенного слова делая заглавной. Из-за этих вариантов возникает интересный вопрос — что делать, когда пользователь не помнит, что он написал в прошлый раз, two_words, two-words или вообще twoWords?

Если в случае two_words, two-words ещё можно приравнять тире к подчёркиванию (и считать их одним и тем же), то в случае с twoWords это не поможет — и у нас будет две разных категории.

Пока единственная здравая мысль — вообще срезать все спецсимволы, и не хранить их в базе записей (тогда останется лишь гладкая и чистая строчка twowords). Но в этом случае список категорий невозможно будет вывести корректно. И в нём появятся всевозможные somelongcategory или ещё что пострашнее (centralasiankicksmartianacidyellowllamasass). Ужас. Негуманно и бесчеловечно.

И, важно учесть ещё, что, хотя категории в базе лежат в смешанном регистре (и так и выводятся в списке категорий, если посмотреть), но для системы регистр не важен, и twoWords, TwoWords и twowords для неё — одно и то же. (Это приравнивание было сделано как раз, чтобы не заставлять людей помнить, что же они там в прошлый раз написали в качестве категории — большие или маленькие буквы, и чтобы у меня в списке названия SPB и spb были одной категорией, а не двумя, а также ещё и потому, что база данных тоже по умолчанию не различает регистр букв).

Где-то на пересечении этих ограничений лежит ответ...

Теоретически, можно ввести нормализованные категории — то есть в списке категорий показывать их названия „по-человечески“ (то есть так, как они записаны в постах), а в базе данных хранить строки без спецсимволов и приведёнными к единому нижнему регистру. Это модель, по которой работает Wacko Wiki и ровно также поступает GMail с адресами пользователей (из-за чего можно писать some.user или SomeUser и всё равно почта дойдёт нормально). Но это же значит, что таблица категорий увеличится на треть. С другой стороны, индекс уменьшится процентов на 15-20 5-10...

А ещё меня ужасает идея, что иногда пользователю нужно поменять тридцать (сто?) записей, чтобы все перевести их в другую категорию. И вот на вопрос пользователя „а быстрее можно?“ у меня ответа пока нет, и это уже совсем другая история...

Subscribe
  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 18 comments