Миграция таблиц MSSQL MySQL
Таблица документов
На MSSQL:
CREATE TABLE "Document" ( "ID" INT NOT NULL, "IDEDO" NVARCHAR(128) NULL DEFAULT NULL, "SigOne" BIT NOT NULL, "SigTwo" BIT NOT NULL, "KeyOne" NVARCHAR(50) NULL DEFAULT NULL, "KeyTwo" NVARCHAR(50) NULL DEFAULT NULL, "NameFile" NVARCHAR(128) NOT NULL, "FileBody" IMAGE NULL DEFAULT NULL, "IsError" BIT NOT NULL DEFAULT b'0', PRIMARY KEY ("ID") );
Вариант на MуSQL:
CREATE TABLE `Document` ( `ID` INT UNSIGNED NOT NULL AUTO_INCREMENT, `IDEDO` VARCHAR(128) DEFAULT NULL, `SigOne` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', `SigTwo` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', `KeyOne` VARCHAR(50) DEFAULT NULL, `KeyTwo` VARCHAR(50) DEFAULT NULL, `NameFile` VARCHAR(128) NOT NULL DEFAULT '', `FileBody` LONGBLOB, `IsError` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`ID`) ) ENGINE=INNODB;
Соответствие некоторых колонок в схемах MSSQL и MySQL:
Колонка | MSSQL | MySQL | Назначение |
---|---|---|---|
ID | INT NOT NULL | INT UNSIGNED NOT NULL AUTO_INCREMENT | Первичный ключ |
IDEDO | NVARCHAR(128) NULL DEFAULT NULL | VARCHAR(128) DEFAULT NULL | Название |
FileBody | IMAGE NULL DEFAULT NULL | LONGBLOB | Двоичный файл |
IsError | BIT NOT NULL DEFAULT b'0' | TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' | Булев (да/нет) |
Таблица полей
На MSSQL:
CREATE TABLE "Field" ( "ID" INT NOT NULL, "InnerName" NVARCHAR(50) NOT NULL, "DisplayName" NVARCHAR(50) NOT NULL, "FieldType" NVARCHAR(50) NOT NULL, PRIMARY KEY ("ID") );
На MySQL:
CREATE TABLE `Field` ( `ID` INT UNSIGNED NOT NULL AUTO_INCREMENT, `InnerName` CHAR(50) NOT NULL DEFAULT '', `DisplayName` CHAR(50) NOT NULL DEFAULT '', `FieldType` CHAR(2) NOT NULL DEFAULT '', PRIMARY KEY (`ID`), UNIQUE KEY `InnerName` (`InnerName`) ) ENGINE=INNODB;
Был добавлен уникальный ключ InnerName
как доработка схемы БД.
Таблица значений полей
На MSSQL:
CREATE TABLE "FieldMapping" ( "ID" INT NOT NULL, "DocumentID" INT NOT NULL, "FieldID" INT NOT NULL, "FieldValue" NVARCHAR(100) NOT NULL, PRIMARY KEY ("ID") );
На MySQL:
CREATE TABLE `FieldMapping` ( `DocumentID` INT UNSIGNED NOT NULL, `FieldID` INT UNSIGNED NOT NULL, `FieldValue` VARCHAR(100) NOT NULL DEFAULT '', PRIMARY KEY (`DocumentID`, `FieldID`) );
Колонка ID удалена так как не имеет значения, первичный ключ - по двум колонкам DocumentID
, FieldID