Как спроектировать, когда тип столбца в MySQL изменил свой тип?(раньше был int, теперь должен быть int или string) - PullRequest
0 голосов
/ 11 октября 2018

Мы разрабатываем схемы баз данных в MySQL с учетом меняющихся требований.

Все начинается с простого проекта:

fact таблица:

|id|featureid|featurevalue|
|----|----|----|
|1|1000|42|

dimensionтаблица:

|featureid|featurename|
|---------|-----------|
|1000|awesome_feature|

все работает нормально до сегодняшнего дня, когда требуется новое требование для хранения строки для featurevalue в базе данных.

iпонять основы схемы таблицы и то, что столбец featurevalue НЕ может быть одновременно bigint(20) и varchar(255).

Так что я думаю о чем-то вроде добавления нового столбца с именем featurevalue_string вfact таблица.Однако я не совсем уверен в этом решении, так как есть только 1 или 2 объекта со строковыми значениями, а остальная часть должна быть по-прежнему int.

Вопрос здесь в том, как принять такое изменение втребование в нашей базе данных дизайна?

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете разбить его на два столбца:

FeatureDataType VARCHAR(40) NOT NULL 
FeatureData VARCHAR(255) NOT NULL 

Первый описывает данные, второй содержит данные.

Заполните их как

FeatureDataType="INTEGER", FeatureData ="1234"
FeatureDataType="VARCHAR", FeatureData ="fire is hot"

Затем, когда вы ВЫБИРАЕТЕ данные, вы можете выполнить преобразование в тип данных, указанный в FeatureDataType.

Обратите внимание, что это на самом деле станет проблемой обслуживания и отчетности, и вам, вероятно, следует переработать схемуи / или переопределение вашей проблемы вместо того, чтобы делать это.

...