Каков максимальный размер первичного ключа в Firebird?

Я должен установить поле Varchar(255) как первичный ключ таблицы базы данных в Firebird 2.1.

Я получаю сообщения об ошибках, говоря, что размер поля является слишком большим. Я использую UTF8 в качестве своего набора символов и размера страницы по умолчанию 4 096.

Действительно ли возможно сделать это в Firebird? Я должен удостовериться, что этот столбец уникален.

5
задан dthrasher 23 December 2009 в 16:09
поделиться

2 ответа

Соглашения об именах между уровнями программного обеспечения

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

Например, у меня были Customer (бизнес) и CustomerDAL (уровень доступа к данным)

.. и это часто было изменил в моих последних проектах на, соответственно, ...

Com.Example.ProjectName.Business.Customer и Com.Example.ProjectName.Data. Клиент с интерфейсом ICustomer , который используется между ними вместо прямого доступа к какому-либо конкретному классу в целевом проекте.

Важность именования классов изменяется из-за низкой сплоченности

Обычно, путем реализации суффикс или префикс класса , которые вы пытаетесь предотвратить от конфликтов имен между тесно связанными сборками .

Однако обычно рекомендуется иметь слабосвязанные сборки посредством интерфейсов ; побочный эффект - вы больше не используете имя конкретного класса напрямую. В противном случае, используя тесно связанные сборки, вы могли бы также объединить их в одну сборку, потому что они напрямую зависят друг от друга, и преимущества отдельных сборок уменьшаются.

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

В двух словах, низкая связность снимает вопрос о том, какие классы должны / могли / могли бы быть названы на любом уровне проекта относительно друг друга. А поскольку у вас уже есть отдельные сборки для бизнеса и данных, вы должны неявно хотеть, чтобы присутствовала низкая связность. Итак, мой ответ в контексте разработки приложения: суффикс или префикс класса объективно не лучше в соответствии с концепцией вопроса.

Пример кода C #

Для полезного примера кода я ' Это то же самое, что сказал Дуглас Тоси .

Это очень хорошо видно в таких инструментах, как полная версия IBExpert или в IBAnalist

0
ответ дан 14 December 2019 в 01:09
поделиться

Согласно FirebirdFAQ максимальный размер ключа в Firebird 2.x составляет одну четверть размера страницы. Если размер страницы составляет 4096 байт, то максимальный размер ключа - 1024 байта.
. UTF8 варвары резервируют полные 32 бита на символ, даже если он может использовать меньше места. Таким образом, в UTF8 варвар(255) составляет 1020 байт. Не знаю, почему это достигает предела, но в любом случае я бы увеличил размер страницы или попробовал бы использовать варчар(254).

.
1
ответ дан 14 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: