pongee/database-schema-visualization

3.2.0 2022-03-05 18:43 UTC

This package is auto-updated.

Last update: 2024-09-06 00:34:59 UTC


README

Latest Stable Version Minimum PHP Version License GitHub code size in bytes

项目目标

本项目的目的是从SQL模式生成数据库文档。

支持的数据库

  • MySQL
  • MariaDB
  • Apache Cassandra(基本功能)

支持的输出格式

  • PNG, SVG 图像
  • Plantuml 纯文本
  • Json

安装前

安装

$ composer require pongee/database-schema-visualization
or add it the your composer.json and make a composer update pongee/database-schema-visualization.

使用方法

在控制台中

PNG 导出

$  php ./database-schema-visualization mysql:image ./example/schema/sakila.sql > ./example/img/sakila.png
$  php ./database-schema-visualization mysql:image --type png ./example/schema/sakila.sql > ./example/img/sakila.png

输出: 示例输出

SVG 导出

$  php ./database-schema-visualization mysql:image --type svg ./example/schema/sakila.sql > ./example/img/sakila.svg

Json 导出

$  php ./database-schema-visualization mysql:json ./example/schema/sakila.sql

Plantuml 导出

$  php ./database-schema-visualization mysql:plantuml ./example/schema/sakila.sql

PHP

Png 导出

<?php declare(strict_types=1);

use Pongee\DatabaseSchemaVisualization\DataObject\Sql\Database\Connection\ConnectionCollection;
use Pongee\DatabaseSchemaVisualization\Export\Plantuml;
use Pongee\DatabaseSchemaVisualization\Generator\ImageGenerator;
use Pongee\DatabaseSchemaVisualization\Parser\MysqlParser;

include __DIR__ . '/../../vendor/autoload.php';

$sqlSchema = '
  CREATE TABLE IF NOT EXISTS `foo` (
    `id` INT(10) UNSIGNED NOT NULL COMMENT "The id"
   ) ENGINE=innodb DEFAULT CHARSET=utf8;
';

$sqlParser                = new MysqlParser();
// $cqlParser                = new \Pongee\DatabaseSchemaVisualization\Parser\CassandraParser();
$plantumlExport             = new Plantuml(file_get_contents(__DIR__ . '/../../src/Template/Plantuml/v1.twig'));
$forcedConnectionCollection = new ConnectionCollection();
$imageGenerator             = new ImageGenerator(
    'png',
    __DIR__ . '/../../bin/plantuml.jar',
    __DIR__ . '/../../tmp/'
);

$schema = $sqlParser->run($sqlSchema, $forcedConnectionCollection);

print $imageGenerator->generate($plantumlExport->export($schema));

Json 导出

<?php declare(strict_types=1);

use Pongee\DatabaseSchemaVisualization\DataObject\Sql\Database\Connection\ConnectionCollection;
use Pongee\DatabaseSchemaVisualization\Export\Json;
use Pongee\DatabaseSchemaVisualization\Parser\MysqlParser;

include './vendor/autoload.php';

$sqlSchema = '
  CREATE TABLE IF NOT EXISTS `foo` (
    `id` INT(10) UNSIGNED NOT NULL COMMENT "The id"
   ) ENGINE=innodb DEFAULT CHARSET=utf8;
';

$mysqlParser                = new MysqlParser();
$jsonExport                 = new Json();
$forcedConnectionCollection = new ConnectionCollection();

$schema = $mysqlParser->run($sqlSchema, $forcedConnectionCollection);

print $jsonExport->export($schema);
这将生成
{
    "tables": {
        "foo": {
            "columns": [
                {
                    "name": "id",
                    "type": "INT",
                    "typeParameters": [
                        "10"
                    ],
                    "otherParameters": "UNSIGNED NOT NULL",
                    "comment": "The id"
                }
            ],
            "indexs": {
                "simple": [],
                "spatial": [],
                "fulltext": [],
                "unique": []
            },
            "primaryKey": []
        }
    },
    "connections": []
}