Запрос предложений для определения первичного ключа в Oracle 11g - PullRequest
1 голос
/ 14 декабря 2011

Все,

У меня есть прочитано несколько других сообщений , прежде чем задавать мой вопрос вам.

У меня большой опыт программирования / администрирования с другими базами данных: MySql, MSSQL, PostGres и , которая не будет называться .У меня просто нет большого опыта работы с Oracle.

Мне было поручено разработать несколько веб-приложений и поддерживать таблицы базы данных.Таблицы были разработаны с использованием диаграммы ER и отправлены в группу разработки для реализации.Когда они отослали предложенные операторы создания таблиц, я увидел две вещи, которые мне кажутся неправильными.Первичным ключом является NUMBER(5), а для последовательности MAXVALUE установлено значение 99999.

Я бы ожидал, что MAXVALUE будет опущен в пользу NOMAXVALUE Столбец первичного ключа будет NUMBER(*,0)или LONG.Поскольку у меня нет большого опыта в разработке таблиц Oracle, не могли бы вы предложить свой совет?

С уважением

Кристофер Хох

Редактировать Спасибо за информацию по LONG.Я обязательно использую NUMBER, но мне все еще неясно, как лучше его определить: NUMBER, или NUMBER(*,0), или NUMBER(9) и т. Д.

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

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

Но "долго"вызовет проблемы.В Oracle «long» - это символьный тип данных, который считается устаревшим.Это не то же самое, что длинный тип данных для чисел в других языках / системах.Это сложно.

1 голос
/ 14 декабря 2011

Я согласен с вами: поскольку в столбце содержится суррогатный ключ, сгенерированный из последовательности, единственная возможная цель ограничения в 5 цифр состоит в том, чтобы ограничить общее количество строк, когда-либо допустимых в таблице, до 100 000, что казалось бы извращенным. Это, конечно, не дает никаких преимуществ в производительности или эффективности использования пространства. Вероятно, это просто по умолчанию генератор DDL их инструмента ERD.

Не используйте LONG: в Oracle это устаревший и устаревший способ хранения больших текстовых строк (для которых сейчас предпочитается CLOB).

...