- Remove nested .github/.github/workflows/ (duplicate of .github/workflows/) - Move Подшипники/4.16 README.md to docs/podshipniki/4.16/README_ru.md (Russian version) - Merge data/schema/ into data/schemas/ (consolidate SQL + YAML schemas) - Remove WIP/TODO markers from README files (data/raw, data/tables, data/assets, data/database, archive, docs/technical, sources, tools) - Update data/database/README.md to reference new schema location - Update sources/README.md with correct links https://claude.ai/code/session_0176RmB3i3w7NQ23MdddWEgV
6.6 KiB
6.6 KiB
Schema Definitions
Эта директория содержит YAML-схемы для валидации CSV файлов в директории /data/, а также SQL-схему базы данных (bearings_db_schema.sql).
Назначение
Схемы используются для:
- Валидации структуры CSV файлов - проверка наличия обязательных колонок
- Документирования формата данных - описание типов данных в каждой колонке
- Определения уникальных ключей - какие комбинации полей должны быть уникальными
- Порядка сортировки - предпочтительный порядок сортировки записей
Структура схем
Каждая схема представляет собой YAML файл, содержащий JSON-подобную структуру с массивом таблиц:
{
"tables": [
{
"name": "имя_таблицы", # Логическое имя таблицы
"path": "data/...", # Путь к CSV файлу
"columns": { # Определение колонок
"column_name": "string" # Имя колонки: тип данных
},
"unique": ["col1", "col2"], # Комбинация полей, которая должна быть уникальной
"sort_by": ["col1", "col2"] # Порядок сортировки
}
]
}
Примечание: Схемы хранятся в YAML-файлах, но используют JSON-подобный синтаксис для совместимости с существующими валидаторами.
Доступные схемы
analogs.yaml
Схемы для таблиц аналогов подшипников:
analogs_gost_iso- соответствия ГОСТ ↔ ISO (data/analogs/gost_iso.csv)analogs_units- подшипниковые узлы (data/analogs/units.csv)analogs_housings- корпусные подшипники (data/analogs/housings.csv)
Поля:
source- источник данных (например, "Аналоги/ГОСТ_ISO.md")gost- обозначение по ГОСТiso- обозначение по ISObrand- производитель (опционально)notes- примечания и комментарии
Уникальный ключ: комбинация gost + iso
brands.yaml
Схема для таблицы производителей:
brands- информация о брендах (data/brands/brands.csv)
Поля:
brand- название брендаcountry- страна производстваsegment- ценовой/качественный сегментcategories- категории продукцииnotes- дополнительная информацияsource- источник данных
Уникальный ключ: brand
gost.yaml
Схемы для данных ГОСТ:
gost_bearings- подшипники ГОСТ (data/gost/bearings.csv)gost_dimensions- габаритные размеры (data/gost/dimensions.csv)gost_series- размерные серии (data/gost/series.csv)gost_tolerances- допуски и посадки (data/gost/tolerances.csv)
iso.yaml
Схемы для данных ISO:
iso_bearings- подшипники ISO (data/iso/bearings.csv)iso_dimensions- габаритные размеры (data/iso/dimensions.csv)iso_prefixes- префиксы обозначений (data/iso/prefixes.csv)iso_suffixes- суффиксы обозначений (data/iso/suffixes.csv)
Использование схем
Ручная валидация
Проверить соответствие CSV файла схеме можно с помощью скриптов в /scripts/validate/:
python scripts/validate/validate_csv.py data/analogs/gost_iso.csv schemas/analogs.yaml
Автоматическая валидация
Валидация должна запускаться автоматически:
- При коммите (через git hooks) - планируется
- При запуске тестов (pytest)
- При обновлении данных
Добавление новой схемы
- Создайте YAML файл в
schemas/с описанием таблицы - Укажите путь к CSV, колонки, уникальные ключи и порядок сортировки
- Добавьте валидацию в скрипты или тесты
Типы данных
Поддерживаемые типы:
string- текстовая строкаinteger- целое числоfloat- число с плавающей точкойboolean- логическое значение (true/false)date- дата (формат ISO 8601)
Связь с другими директориями
/data/- CSV файлы, которые валидируются этими схемами/scripts/validate/- скрипты для валидации CSV по схемам/tests/- тесты, использующие схемы для проверки целостности данных
Рекомендации
- Всегда обновляйте схему при изменении структуры CSV файла
- Документируйте новые поля в комментариях или в этом README
- Проверяйте уникальность перед добавлением новых записей
- Соблюдайте порядок сортировки (
sort_by) для консистентности данных - Используйте одинаковые имена полей во всех связанных таблицах (например,
brandвезде в единственном числе)
Примечания
- Схемы написаны в формате JSON внутри YAML файлов для совместимости
- Все пути в схемах относительные от корня репозитория
- Уникальные ключи могут быть составными (несколько полей)
- Порядок сортировки важен для читаемости и поиска дубликатов