Есть ли преимущества для чувствительной к регистру базы данных?

Мы только что "перенесли" базу данных SQL Server 2005 из DEVEL в TEST. Каким-то образом в процессе миграции БД была изменена с нечувствительного к регистру на чувствительный, поэтому большинство SQL-запросов сработало эффектно.

Что я хотел бы знать, так это то, есть ли какие-то явные преимущества в использовании схемы с учетом регистра?

ПРИМЕЧАНИЕ. Под этим я подразумеваю имена таблиц, имена столбцов, имена хранимых процедур и т. Д. Я НЕ имею в виду фактические данные, хранящиеся в таблицах.

При первом осмотре я не могу найти вескую причину, которая дает преимущества по сравнению с нечувствительностью к регистру.

8 ответов

Решение

Я только что узнал, почему мы делаем это с учетом регистра. Это делается для того, чтобы при развертывании на клиентском сайте наша БД работала независимо от того, настроен ли клиентский SQL-сервер с учетом регистра или нет.

Это один ответ, которого я не ожидал.

Я действительно не могу придумать причину, по которой идентификаторы SQL должны быть чувствительными к регистру. Я могу думать об одном плохом, о котором MySQL дает, почему их имена таблиц чувствительны к регистру. Каждая таблица представляет собой файл на диске, ваша файловая система чувствительна к регистру, а разработчики MySQL забыли table_file = lc(table_name), Это доставляет массу удовольствия, когда вы перемещаете схему MySQL в файловую систему без учета регистра.

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

Какой-то автор схемы собирается быть умным и решить, что this_table очевидно означает что-то отличное от This_Table и сделать эти две таблицы (или столбцы). Вы могли бы также написать "вставить ошибки здесь" в этой точке схемы.

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

SELECT this, that FROM Table;

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

В этих регионах "нечувствительность к регистру" немного бессмысленна и, вероятно, вводит в заблуждение.

Это обо всем, что я могу думать сейчас; в наборе ASCII, если вы не хотите, чтобы Foo и foo были разными, я не вижу смысла.

Большинство языков чувствительны к регистру, как и большинство алгоритмов сравнения, большинство файловых систем и т. Д. Независимость от регистра предназначена для ленивых пользователей. Хотя это, как правило, облегчает ввод текста и приводит к тому, что многие варианты с одинаковыми именами отличаются только регистром.

Лично, между (MyTable, mytable, myTable, MYTABLE, MYTable, myTABLE, MyTaBlE), я хотел бы видеть одну универсальную версию.

Мне нравится чувствительность к регистру, в основном потому, что к этому я привык программировать на Perl (и большинство других языков тоже). Мне нравится использовать StudlyCaps для имен таблиц и все строчные буквы с подчеркиваниями для столбцов.

Конечно, многие базы данных позволяют вам заключать в кавычки имена, как это делает Postgres. Это также кажется разумным подходом.

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

Вообще говоря, мне проще работать с базами данных, где нет никакой возможности, чтобы ID, id и Id были разными полями.

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

Единственная база данных, над которой я когда-либо работал, была настроена на чувствительность к регистру, это Великие равнины. Я обнаружил, что помнить каждый случай их именования схемы было болезненно. У меня не было привилегии работать с более свежими версиями.

Если это не изменилось и если моя память не откажется, характер чувствительности к регистру, о котором вы говорите, определяется во время установки и применяется ко всем базам данных. Это было в случае установки SQL Server, которая управляла базой данных Great Plains, о которой я упоминал, что все базы данных в этой установке чувствительны к регистру.

Я почти уверен, что спецификация SQL требует свертывания регистра (что фактически идентично нечувствительности) для идентификаторов. PostgreSQL сбрасывается в нижнюю, ORACLE - в верхнюю.

Я поддерживаю сервер баз данных Sybase Advantage, и он использует формат плоских файлов, позволяющий использовать DBF, а также наш собственный проприетарный формат ADT. Случай, в котором я вижу проблему чувствительности к регистру, связан с использованием нашей версии сервера для Linux. Linux является чувствительной к регистру ОС, поэтому в нашей базе данных есть опция для строчных букв всех вызовов. Это требует, чтобы файлы таблиц были в нижнем регистре.

Другие вопросы по тегам