@Smeilz1
За любое развитие

Какой тип данных выбирать для ID в PostgreSQL?

Я работаю с PostgreSQL 10.5
1. У меня база содержит ID и название акции.
Как я понял для ID лучше выбирать int, а не smallint.
ТАк как Int содержит до +32767, и если база разрастется, то придется менять тип
2. Для названия акции есть тип character varying(n), varchar(n) Нужно ли задавать его длину? Или можно оставить поле пустым?
3. Как влияет задание длины поля на экономию места в базе? Например varchar (10) и varchar(100) будут занимать разное место на диске? Например сейчас все названия акций не более 10 букв, а что будет, если в будущем появится название из 30 букв? Придется изменять длину строки? Можно ли так делать, когда база уже частично заполнена?
4. Для чего ставить поле -Not null? Допустим мой скрипт не сможет спарсить корректно название тикера и не передаст в строку ничего, а в остальные колонки запишет информацию. В этом случае строка не запишется или выдаст ошибку?
  • Вопрос задан
  • 4902 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Как я понял для ID лучше выбирать int, а не smallint.

Тип необходимо выбирать соответствующий данным.
Например, для идентификатора страны int будет явно избыточен. А где-то и int мало и нужен bigint

2. Для названия акции есть тип character varying(n), varchar(n) Нужно ли задавать его длину? Или можно оставить поле пустым?

Это вопрос к вам как автору схемы базы.

3. Как влияет задание длины поля на экономию места в базе?

Никак. Это просто дополнительное ограничение данных.
varchar и text - типы с переменным размером, занимают столько места, сколько данных записано.

Например сейчас все названия акций не более 10 букв, а что будет, если в будущем появится название из 30 букв? Придется изменять длину строки? Можно ли так делать, когда база уже частично заполнена?

Увеличивать размерность возможно и это быстрая операция.

4. Для чего ставить поле -Not null?

Дополнительное ограничение на данные, запрещающее ставить специальное значение NULL, то есть "нет значения". Использовать или не использовать NULL - решение автора схемы базы.
Если вы попытаетесь записать NULL в поле отмеченное not null - будет ошибка и ничего записано не будет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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