Можно ли хранить целое число и uuid в одном столбце типа varchar? - PullRequest
0 голосов
/ 09 июля 2020

В моем приложении есть анонимные и аутентифицированные пользователи, аутентифицированные пользователи имеют длинный идентификатор, предоставленный AuthService, анонимные пользователи имеют uuid для идентификации в приложении. У меня есть элемент таблицы, в котором хранятся элементы каждого пользователя, как показано ниже

Item
+---------+----------------------------------------+----------+
| item_id |                user_id                 | quantity |
+---------+----------------------------------------+----------+
|      1  | '1'                                    |        2 |
|      2  | 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' |        3 |
|      3  | '2'                                    |        1 |
+---------+----------------------------------------+----------+

Можно ли хранить Long id и uuid в одном столбце типа varchar?

1 Ответ

0 голосов
/ 09 июля 2020

Это нормально, поскольку это технически возможно.

Хороший ли дизайн - другой вопрос. Во-первых, вы напрасно тратите место для хранения, если храните UUID в виде текста. Это также повлияет на размер любого индекса в столбце. Кроме того, таким образом у вас не будет защиты от того, что кто-либо хранит hello в этом столбце.

В общем, лучше выбрать соответствующий тип данных для ваших данных: timestamp для временных меток, uuid для UUID и bigint для сгенерированных ключей numeri c.

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

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