help_en: 'convert the conceptual model into a physical model for SQLite'
help_fr: 'convertit le modèle conceptuel en un modèle physique pour SQLite'
help_zh: '将概念模型转换为 SQLite 的物理模型'
fr_examples:
  - order: 1
    example: 'sqlite'
    explanation: 'version de base'
  - order: 4
    example: 'sqlite:b'
    explanation: 'avec _boilerplate_'
parent: 'sql'
stem_suffix: '_ddl_sqlite'
transform_label:
  - order: 1100
    comment: 'Protect reserved keywords'
    search: '(?i)^(ACCESS|ACCESSIBLE|ALLOCATE|ANALYSE|ANALYZE|ANY|ARE|ARRAY|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|AUDIT|AUTHORIZATION|AVG|BACKUP|BEFORE|BEGIN|BIGINT|BINARY|BIT|BLOB|BOOLEAN|BOTH|BREAK|BROWSE|BULK|BY|CALL|CASCADE|CASCADED|CAST|CHANGE|CHAR|CHARACTER|CHARACTER_LENGTH|CHECKPOINT|CLOSE|CLUSTER|CLUSTERED|COALESCE|COLLATION|COLUMN|COMMENT|COMPRESS|COMPUTE|CONCAT|CONCURRENTLY|CONDITION|CONNECT|CONNECTION|CONSTRAINTS|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CORRESPONDING|COUNT|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DATABASES|DATE|DAY|DAYS|DAY_HOUR|DAY_MICROSECOND|DAY_MINUTE|DAY_SECOND|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFERRED|DEFINE|DEFINER|DELAYED|DENSE_RANK|DENY|DESC|DESCRIBE|DETERMINISTIC|DIAGNOSTICS|DISCONNECT|DISTINCTROW|DISTRIBUTED|DIV|DO|DOUBLE|DUAL|EACH|ELSEIF|EMPTY|ENCLOSED|END|ENUM|ERRLVL|ESCAPED|EXCEPTION|EXCLUDE|EXCLUSIVE|EXEC|EXECUTE|EXIT|EXPLAIN|EXTERNAL|EXTRACT|FALSE|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FIRST_VALUE|FLOAT|FLOAT4|FLOAT8|FOLLOWING|FOR|FORCE|FOUND|FREETEXT|FREETEXTTABLE|FREEZE|FULL|FULLTEXT|FUNCTION|GENERATED|GET|GLOB|GLOBAL|GO|GOTO|GRANT|GROUPING|GROUPS|HASH|HIGH_PRIORITY|HOLDLOCK|HOUR|HOURS|HOUR_MICROSECOND|HOUR_MINUTE|HOUR_SECOND|IDENTIFIED|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|ILIKE|IMMEDIATE|INCREMENT|INDEXED|INDICATOR|INFILE|INITIAL|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INT|INT1|INT2|INT3|INT4|INT8|INTEGER|INTERVAL|INVOKER|IO_AFTER_GTIDS|IO_BEFORE_GTIDS|ISOLATION|ITERATE|JSON_ARRAYAGG|JSON_EXISTS|JSON_OBJECTAGG|JSON_TABLE|KEY|KEYS|KILL|LAG|LAST|LAST_VALUE|LATERAL|LEAD|LEADING|LEAVE|LEFT|LEVEL|LIKE|LINEAR|LINENO|LINES|LOAD|LOCALTIME|LOCALTIMESTAMP|LOCK|LONG|LONGBLOB|LONGTEXT|LOOP|LOWER|LOW_PRIORITY|LTRIM|MASTER_BIND|MASTER_SSL_VERIFY_SERVER_CERT|MATCH|MAX|MAXEXTENTS|MAXVALUE|MEDIUMBLOB|MEDIUMINT|MEDIUMTEXT|MEMBER|MERGE|MICROSECOND|MICROSECONDS|MIDDLEINT|MIN|MINUS|MINUTE|MINUTES|MINUTE_MICROSECOND|MINUTE_SECOND|MLSLABEL|MOD|MODE|MODIFIES|MODIFY|MONTH|MONTHS|NATIONAL|NATURAL|NCHAR|NEW|NEXT|NO|NOAUDIT|NOCHECK|NOCOMPRESS|NONCLUSTERED|NONE|NOWAIT|NO_WRITE_TO_BINLOG|NTH_VALUE|NTILE|NULLIF|NULLS|NUMBER|NUMERIC|NVARCHAR|OF|OFF|OFFLINE|OFFSET|OFFSETS|ONLINE|ONLY|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTIMIZE|OPTIMIZER_COSTS|OPTION|OPTIONALLY|OUT|OUTER|OUTFILE|OUTPUT|OVER|OVERLAPS|PAD|PARALLEL|PARTIAL|PARTITION|PCTFREE|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLACING|PLAN|PORTION|POSITION|PRECEDING|PRECISION|PREPARE|PRESERVE|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|PURGE|RAISE|RAISERROR|RANGE|RANK|RAW|READ|READS|READTEXT|READ_WRITE|REAL|RECONFIGURE|RECURSIVE|REGEXP|RELATIVE|RELEASE|RENAME|REPEAT|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESOURCE|RESPECT|RESTORE|RESTRICT|RETURN|REVERT|REVOKE|RIGHT|RLIKE|ROLLBACK|ROLLUP|ROW|ROWCOUNT|ROWGUIDCOL|ROWID|ROWNUM|ROWS|ROW_NUMBER|RTRIM|RULE|SAVE|SCHEMA|SCHEMAS|SCROLL|SECOND|SECONDS|SECOND_MICROSECOND|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEPARATOR|SESSION|SESSION_USER|SETUSER|SHARE|SHOW|SHUTDOWN|SIGNAL|SIMILAR|SIZE|SMALLINT|SOME|SOUNDS|SPACE|SPATIAL|SPECIFIC|SQL|SQLCODE|SQLERROR|SQLEXCEPTION|SQLID|SQLSTATE|SQLWARNING|SQL_BIG_RESULT|SQL_BUFFER_RESULT|SQL_CACHE|SQL_CALC_FOUND_ROWS|SQL_NO_CACHE|SQL_SMALL_RESULT|SSL|START|STARTING|STATISTICS|STATS_AUTO_RECALC|STATS_PERSISTENT|STATS_SAMPLE_PAGES|STDDEV_POP|STDDEV_SAMP|STORED|STRAIGHT_JOIN|SUBSTRING|SUCCESSFUL|SUM|SYMMETRIC|SYNONYM|SYSDATE|SYSTEM|SYSTEM_USER|TABLESAMPLE|TEMPORARY|TERMINATED|TEXTSIZE|TIMEZONE_HOUR|TIMEZONE_MINUTE|TINYBLOB|TINYINT|TINYTEXT|TOP|TRAILING|TRAN|TRANSLATE|TRANSLATION|TREAT|TRIGGER|TRIM|TRUE|TRUNCATE|TRY_CONVERT|TSEQUAL|UESCAPE|UID|UNBOUNDED|UNDO|UNKNOWN|UNLOCK|UNNEST|UNPIVOT|UNSIGNED|UPDATETEXT|UPPER|USAGE|USE|USER|UTC_DATE|UTC_TIME|UTC_TIMESTAMP|VALIDATE|VALUE|VARBINARY|VARCHAR|VARCHAR2|VARCHARACTER|VARIADIC|VARYING|VAR_POP|VAR_SAMP|VERBOSE|VIEW|VIRTUAL|WAITFOR|WHENEVER|WHILE|WINDOW|WITH|WITHIN|WITHOUT|WORK|WRITE|WRITETEXT|XML|XMLCAST|XMLEXISTS|XMLFOREST|XMLPARSE|XMLQUERY|XMLROOT|XMLSERIALIZE|XOR|YEAR|YEARS|YEAR_MONTH|ZEROFILL)$'
    replace: '"\1"'
transform_relation_name:
  - order: 1000
    comment: 'Protect reserved keywords'
    search: '(?i)^(ACCESS|ACCESSIBLE|ALLOCATE|ANALYSE|ANALYZE|ANY|ARE|ARRAY|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|AUDIT|AUTHORIZATION|AVG|BACKUP|BEFORE|BEGIN|BIGINT|BINARY|BIT|BLOB|BOOLEAN|BOTH|BREAK|BROWSE|BULK|BY|CALL|CASCADE|CASCADED|CAST|CHANGE|CHAR|CHARACTER|CHARACTER_LENGTH|CHECKPOINT|CLOSE|CLUSTER|CLUSTERED|COALESCE|COLLATION|COLUMN|COMMENT|COMPRESS|COMPUTE|CONCAT|CONCURRENTLY|CONDITION|CONNECT|CONNECTION|CONSTRAINTS|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CORRESPONDING|COUNT|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DATABASES|DATE|DAY|DAYS|DAY_HOUR|DAY_MICROSECOND|DAY_MINUTE|DAY_SECOND|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFERRED|DEFINE|DEFINER|DELAYED|DENSE_RANK|DENY|DESC|DESCRIBE|DETERMINISTIC|DIAGNOSTICS|DISCONNECT|DISTINCTROW|DISTRIBUTED|DIV|DO|DOUBLE|DUAL|EACH|ELSEIF|EMPTY|ENCLOSED|END|ENUM|ERRLVL|ESCAPED|EXCEPTION|EXCLUDE|EXCLUSIVE|EXEC|EXECUTE|EXIT|EXPLAIN|EXTERNAL|EXTRACT|FALSE|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FIRST_VALUE|FLOAT|FLOAT4|FLOAT8|FOLLOWING|FOR|FORCE|FOUND|FREETEXT|FREETEXTTABLE|FREEZE|FULL|FULLTEXT|FUNCTION|GENERATED|GET|GLOB|GLOBAL|GO|GOTO|GRANT|GROUPING|GROUPS|HASH|HIGH_PRIORITY|HOLDLOCK|HOUR|HOURS|HOUR_MICROSECOND|HOUR_MINUTE|HOUR_SECOND|IDENTIFIED|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|ILIKE|IMMEDIATE|INCREMENT|INDEXED|INDICATOR|INFILE|INITIAL|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INT|INT1|INT2|INT3|INT4|INT8|INTEGER|INTERVAL|INVOKER|IO_AFTER_GTIDS|IO_BEFORE_GTIDS|ISOLATION|ITERATE|JSON_ARRAYAGG|JSON_EXISTS|JSON_OBJECTAGG|JSON_TABLE|KEY|KEYS|KILL|LAG|LAST|LAST_VALUE|LATERAL|LEAD|LEADING|LEAVE|LEFT|LEVEL|LIKE|LINEAR|LINENO|LINES|LOAD|LOCALTIME|LOCALTIMESTAMP|LOCK|LONG|LONGBLOB|LONGTEXT|LOOP|LOWER|LOW_PRIORITY|LTRIM|MASTER_BIND|MASTER_SSL_VERIFY_SERVER_CERT|MATCH|MAX|MAXEXTENTS|MAXVALUE|MEDIUMBLOB|MEDIUMINT|MEDIUMTEXT|MEMBER|MERGE|MICROSECOND|MICROSECONDS|MIDDLEINT|MIN|MINUS|MINUTE|MINUTES|MINUTE_MICROSECOND|MINUTE_SECOND|MLSLABEL|MOD|MODE|MODIFIES|MODIFY|MONTH|MONTHS|NATIONAL|NATURAL|NCHAR|NEW|NEXT|NO|NOAUDIT|NOCHECK|NOCOMPRESS|NONCLUSTERED|NONE|NOWAIT|NO_WRITE_TO_BINLOG|NTH_VALUE|NTILE|NULLIF|NULLS|NUMBER|NUMERIC|NVARCHAR|OF|OFF|OFFLINE|OFFSET|OFFSETS|ONLINE|ONLY|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTIMIZE|OPTIMIZER_COSTS|OPTION|OPTIONALLY|OUT|OUTER|OUTFILE|OUTPUT|OVER|OVERLAPS|PAD|PARALLEL|PARTIAL|PARTITION|PCTFREE|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLACING|PLAN|PORTION|POSITION|PRECEDING|PRECISION|PREPARE|PRESERVE|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|PURGE|RAISE|RAISERROR|RANGE|RANK|RAW|READ|READS|READTEXT|READ_WRITE|REAL|RECONFIGURE|RECURSIVE|REGEXP|RELATIVE|RELEASE|RENAME|REPEAT|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESOURCE|RESPECT|RESTORE|RESTRICT|RETURN|REVERT|REVOKE|RIGHT|RLIKE|ROLLBACK|ROLLUP|ROW|ROWCOUNT|ROWGUIDCOL|ROWID|ROWNUM|ROWS|ROW_NUMBER|RTRIM|RULE|SAVE|SCHEMA|SCHEMAS|SCROLL|SECOND|SECONDS|SECOND_MICROSECOND|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEPARATOR|SESSION|SESSION_USER|SETUSER|SHARE|SHOW|SHUTDOWN|SIGNAL|SIMILAR|SIZE|SMALLINT|SOME|SOUNDS|SPACE|SPATIAL|SPECIFIC|SQL|SQLCODE|SQLERROR|SQLEXCEPTION|SQLID|SQLSTATE|SQLWARNING|SQL_BIG_RESULT|SQL_BUFFER_RESULT|SQL_CACHE|SQL_CALC_FOUND_ROWS|SQL_NO_CACHE|SQL_SMALL_RESULT|SSL|START|STARTING|STATISTICS|STATS_AUTO_RECALC|STATS_PERSISTENT|STATS_SAMPLE_PAGES|STDDEV_POP|STDDEV_SAMP|STORED|STRAIGHT_JOIN|SUBSTRING|SUCCESSFUL|SUM|SYMMETRIC|SYNONYM|SYSDATE|SYSTEM|SYSTEM_USER|TABLESAMPLE|TEMPORARY|TERMINATED|TEXTSIZE|TIMEZONE_HOUR|TIMEZONE_MINUTE|TINYBLOB|TINYINT|TINYTEXT|TOP|TRAILING|TRAN|TRANSLATE|TRANSLATION|TREAT|TRIGGER|TRIM|TRUE|TRUNCATE|TRY_CONVERT|TSEQUAL|UESCAPE|UID|UNBOUNDED|UNDO|UNKNOWN|UNLOCK|UNNEST|UNPIVOT|UNSIGNED|UPDATETEXT|UPPER|USAGE|USE|USER|UTC_DATE|UTC_TIME|UTC_TIMESTAMP|VALIDATE|VALUE|VARBINARY|VARCHAR|VARCHAR2|VARCHARACTER|VARIADIC|VARYING|VAR_POP|VAR_SAMP|VERBOSE|VIEW|VIRTUAL|WAITFOR|WHENEVER|WHILE|WINDOW|WITH|WITHIN|WITHOUT|WORK|WRITE|WRITETEXT|XML|XMLCAST|XMLEXISTS|XMLFOREST|XMLPARSE|XMLQUERY|XMLROOT|XMLSERIALIZE|XOR|YEAR|YEARS|YEAR_MONTH|ZEROFILL)$'
    replace: '"\1"'
transform_relation:
  - order: 300
    comment: 'Prevent moving primary key constraints to the beginning of the table (cf. parent template).'
transform_relational_schema:
  - order: 1000
    comment: 'Prevent moving foreign key constraints to the end of the table (cf. parent template).'
  - order: 1100
    comment: 'Prevent grouping foreign key constraints (cf. parent template).'
