История взята из реального проекта. Но поскольку реальный проект слишком скучный (и под NDA), в этой статье используется упрощенный пример.
Жил-был один проект. И была у него база данных. И была в базе таблица для хранения, ну, скажем, котов. Вот такая:
CREATE TABLE cats (
id serial,
cname varchar(20),
ctype varchar(20),
primary key(id)
);
Все довольно просто: у каждого кота есть id, имя и некий тип.
Конечно, у нас были бизнес-требования к котам и их типам. Например, мы точно знали, что у нас есть типы **big furry**, **neko** и **sudden danger**. Предполагали, что могут появиться типы **long tail** и **sleeper-eater**. Но мы ожидали, что требования будут меняться. И пока не известно, какие в итоге понадобятся типы. Поэтому использовали тип данных **varchar(20)**.
[Читать дальше →][1]
[1]:
https://habrahabr.ru/post/306728/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut