openstore/schema-core

0.51.6 2019-02-06 14:03 UTC

README

PHP Version Build Status Latest Stable Version Total Downloads License

openstore-schema-core 为 openstore 项目提供基本数据库模式。它包含大约 80 张表,专门用于处理在线目录。

免责声明:这是一个正在进行中的工作!

product_erd_image

警告:openstore-schema-core 项目依赖于 doctrine2 以便于模式生成。尚未进行任何工作来使实体通过 doctrine 有用,因为 openstore 使用 zend-db 进行数据库访问。换句话说,模式生成工作良好,但如果需要使用 doctrine 进行数据访问,则还有工作要做(修复关系命名,制作存储库...)。

要求

  • PHP 7.1+
  • MySQL 或 MariaDB 带有 InnoDB

特性

  • 从 doctrine 实体自动生成模式。
  • 支持轻松的模式迁移。
  • 提供特殊的触发器、存储过程和函数(见 额外功能)。
  • 原始 SQL 生成。(见 生成的 SQL

安装

克隆项目

$ git clone https://github.com/belgattitude/openstore-schema-core.git

或者,您可以通过 composer 安装项目 composer require openstore/schema-core

设置

配置

复制 分发配置文件 并编辑您的数据库参数

$ cp ./config/openstore-schema-core.config.php.dist ./config/openstore-schema-core.config.php
# Edit database parameters
$ vi ./config/openstore-schema-core.config.php

数据库

首先确保您的数据库服务器受支持,并启用对 utf8mb4 字符集的支持。

注意:要使用 utf8mb4,请检查以下参数是否存在于 mysql 配置文件(my.cnf)中

然后创建一个新的数据库

$ mysql -e "CREATE DATABASE openstore_test CHARACTER SET='utf8mb4' COLLATE='utf8mb4_unicode_ci';" -u {USER} -p

命令

您可以通过执行以下命令列出已注册的命令

$ ./bin/openstore-schema-core

实际上,使用以下命令

注意:使用 --dump-sql 选项显示 DDL,而不是将其应用于数据库。这在显示生产数据库中所需的迁移时特别有用,例如

$ ./bin/openstore-schema-core openstore:schema:update --dump-sql

将显示必须在 当前 数据库上应用的迁移。

常见问题解答

注意:下面描述的备份和恢复方案尚未在实际生产中使用。请确保您知道自己在做什么。

备份数据库

使用 mysqldump,最好将 schema(DDL)和 data(插入)分别备份到不同的文件中,这允许在全新的数据库上恢复数据。例如

# 1. Backup of the schema (ddl: create tabes, routines...)
$ mysqldump -u {USER} -p --no-data --triggers --events --routines --default-character-set=utf8mb4 {DATABASE} > /{PATH}/{DATABASE}.schema.sql
# 2. Backup of the data (sql: inserts)
$ mysqldump -u {USER} -p --no-create-info --skip-triggers --complete-insert --disable-keys --default-character-set=utf8mb4 --lock-tables {DATABASE} > /{PATH}/{DATABASE}.data.sql 

在新创建的方案上恢复数据

首先使用上述方法执行 mysqldump 备份,然后创建一个新的方案

# 1. Generate the latest openstore schema
$ ./bin/openstore-schema-core openstore:schema:create --dump-sql > /{PATH}/openstore.schema.sql
# 2. Create a new database that will hold it  
$ mysql -e "create database {NEW_DATABASE} CHARSET='utf8mb4' COLLATE='utf8mb4_unicode_ci'" -u{USER} -p
# 3. Apply the latest generated schema on your newly created database
$ mysql -u {USER} -p {NEW_DATABASE} < /{PATH}/openstore.schema.sql
# 4. Restore the 'data' backup of your old database in the new database.
$ mysql -u {USER} -p {NEW_DATABASE} < /{PATH}/{BACKUP_FILE}.data.sql

移动/重命名数据库

在将数据库恢复到新方案后,您可能想移动/重命名它。

对于开发或小型数据库,您可以使用 mysqldump

# 1. Create the new database (a new empty one) 
$ mysql -e "create database {NEW_DATABASE} CHARSET='utf8mb4' COLLATE='utf8mb4_unicode_ci'" -u{USER} -p
# 2. Complete backup of your database 
$ mysqldump -u {USER} -p --routines --events --triggers --default-character-set=utf8mb4 {DATABASE} > /{PATH}/{DATABASE}.all.sql
# 3. Restore the complete backup in the new database
$ mysql -u {USER} -p {NEW_DATABASE} < /{PATH}/{DATABASE}.all.sql      

您还可以(Unix)将最后两个命令通过管道连接

未来

  • 开始处理存储库。
  • 文档表和约定。
  • 将 doctrine validate 添加到 CI 中(修复错误的关系名称)。

注释

Unicode

从版本 0.40.0 开始,openstore-schema-core 默认使用 utf8mb4 字符集。

如果您无法设置MySQL服务器变量(例如在持续集成服务器上...),您可以回退到生成的兼容性脚本

压缩表

可选的,为了减少磁盘使用,您可以更改以下表的压缩格式

ALTER TABLE product_translation ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
ALTER TABLE product_category_translation ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

ALTER TABLE sale_order_line ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
ALTER TABLE sale_order ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

贡献

欢迎贡献,克隆仓库并提交拉取请求。

对贡献者的提示

确保在提交前执行代码风格检查

$ composer cs-check

您还可以自动修复代码风格问题

$ composer cs-fix

别忘了重新生成sql文档

$ composer build