SchemaSpy — анализатор схемы базы данных и генератор визульного представления о схеме или базы данных. Очень полезный инструмент для ознакомления или анализа схемы. Умеет представить всю схему в виде XML, и составить порядок таблиц при загрузке данных (бывает очень нужно) и порядок удаления (конечно drop user <username> cascade или drop database спасет, но если надо очистить только данные — самое то).
Поддерживаемые базы данных:
db2, firebird, hsqldb, oracle, mssql, mysql, sybase, PostgreSQL
Находит следующие аномалии:
· Columns whose name and type imply a relationship to another table’s primary key
Спорная аномалия, но может пригодится, показывается колонки таблицы которые потенциально должны иметь отношения к колонкам другой таблицы, критерий отбора — одинаковые имена и наличие индексов.
· Tables without indexes
Здесь все ясно. Если из базы данных что-то надо извлекать (искать) то наличие индексов ускорит этот процесс.
· Columns that are flagged as both ‘nullable’ and ‘must be unique’
Колонка объявленная как Nullable, но при этом имеет ограничение (constraint) уникальности (или первичный ключ).
· Tables that contain a single column
Таблицы только с одной колонкой. Зачем они нужны? Иногда нужны. Для построения динамических списков (диапазонов) с последующим соединением с другой таблицой или создание списка со значением по умолчанию. Что бы использовать к примеру один insert и один select, а не делать вставку в цикле. Хотя для этой цели можно использовать определенную системную таблицу, зная что в ней достаточно записей для построения требуемого диапазона.
· Tables with incrementing column names, potentially indicating denormalization
Таблицы в которых есть колонки с именем, отличающимся только последними цифрами, то есть Col1, Col2 .. Coln.
· Columns whose default value is the word ‘NULL’ or ‘null’, but the SQL NULL value may have been intended
Колонки со значениями NULL или null (интересная аномалия).
я бы добавил в анализ аномалий:
- Таблицы без записей,
- Таблицы в которых количество полей больше 20, 35, 30 .. n
- Колонки которые можно сделать not null
- Колонки которые можно сделать unique
- Индексы которые не могут при выборках (когда диапазон значений очень маленький, а записей очеь много)
Интерфейс к командной строке (GUI)
SchemaSpyGUI — что бы легче было составить командную строку (только с 15-ой попытки заполнил все правильно для oracle, и с 5-ой для mysql)
Требования:
· Jdbc драйвера.
· GraphViz – опционально, для построения графического представления. Под windows я так и не добился его работы.