// ===================================================== // NEO4J SCHEMA FROM POSTGRESQL DATA // Price-focused migration from existing PostgreSQL database // ===================================================== // Clear existing data MATCH (n) DETACH DELETE n; // ===================================================== // CREATE CONSTRAINTS AND INDEXES // ===================================================== // Create uniqueness constraints CREATE CONSTRAINT price_tier_name_unique IF NOT EXISTS FOR (p:PriceTier) REQUIRE p.tier_name IS UNIQUE; CREATE CONSTRAINT technology_name_unique IF NOT EXISTS FOR (t:Technology) REQUIRE t.name IS UNIQUE; CREATE CONSTRAINT tool_name_unique IF NOT EXISTS FOR (tool:Tool) REQUIRE tool.name IS UNIQUE; CREATE CONSTRAINT stack_name_unique IF NOT EXISTS FOR (s:TechStack) REQUIRE s.name IS UNIQUE; // Create indexes for performance CREATE INDEX price_tier_range_idx IF NOT EXISTS FOR (p:PriceTier) ON (p.min_price_usd, p.max_price_usd); CREATE INDEX tech_category_idx IF NOT EXISTS FOR (t:Technology) ON (t.category); CREATE INDEX tech_cost_idx IF NOT EXISTS FOR (t:Technology) ON (t.monthly_cost_usd); CREATE INDEX tool_category_idx IF NOT EXISTS FOR (tool:Tool) ON (tool.category); CREATE INDEX tool_cost_idx IF NOT EXISTS FOR (tool:Tool) ON (tool.monthly_cost_usd); // ===================================================== // PRICE TIER NODES (from PostgreSQL price_tiers table) // ===================================================== // These will be populated from PostgreSQL data // Structure matches PostgreSQL price_tiers table: // - id, tier_name, min_price_usd, max_price_usd, target_audience, typical_project_scale, description // ===================================================== // TECHNOLOGY NODES (from PostgreSQL technology tables) // ===================================================== // These will be populated from PostgreSQL data // Categories: frontend_technologies, backend_technologies, database_technologies, // cloud_technologies, testing_technologies, mobile_technologies, // devops_technologies, ai_ml_technologies // ===================================================== // TOOL NODES (from PostgreSQL tools table) // ===================================================== // These will be populated from PostgreSQL data // Structure matches PostgreSQL tools table with pricing: // - id, name, category, description, monthly_cost_usd, setup_cost_usd, // price_tier_id, total_cost_of_ownership_score, price_performance_ratio // ===================================================== // TECH STACK NODES (will be generated from combinations) // ===================================================== // These will be dynamically created based on: // - Price tier constraints // - Technology compatibility // - Budget optimization // - Domain requirements // ===================================================== // RELATIONSHIP TYPES // ===================================================== // Price-based relationships // - [:BELONGS_TO_TIER] - Technology/Tool belongs to price tier // - [:WITHIN_BUDGET] - Technology/Tool fits within budget range // - [:COST_OPTIMIZED] - Optimal cost-performance ratio // Technology relationships // - [:COMPATIBLE_WITH] - Technology compatibility // - [:USES_FRONTEND] - Stack uses frontend technology // - [:USES_BACKEND] - Stack uses backend technology // - [:USES_DATABASE] - Stack uses database technology // - [:USES_CLOUD] - Stack uses cloud technology // - [:USES_TESTING] - Stack uses testing technology // - [:USES_MOBILE] - Stack uses mobile technology // - [:USES_DEVOPS] - Stack uses devops technology // - [:USES_AI_ML] - Stack uses AI/ML technology // Tool relationships // - [:RECOMMENDED_FOR] - Tool recommended for domain/use case // - [:INTEGRATES_WITH] - Tool integrates with technology // - [:SUITABLE_FOR] - Tool suitable for price tier // ===================================================== // PRICE-BASED QUERIES (examples) // ===================================================== // Query 1: Find technologies within budget // MATCH (t:Technology)-[:BELONGS_TO_TIER]->(p:PriceTier) // WHERE $budget >= p.min_price_usd AND $budget <= p.max_price_usd // RETURN t, p ORDER BY t.total_cost_of_ownership_score DESC // Query 2: Find optimal tech stack for budget // MATCH (frontend:Technology {category: "frontend"})-[:BELONGS_TO_TIER]->(p1:PriceTier) // MATCH (backend:Technology {category: "backend"})-[:BELONGS_TO_TIER]->(p2:PriceTier) // MATCH (database:Technology {category: "database"})-[:BELONGS_TO_TIER]->(p3:PriceTier) // MATCH (cloud:Technology {category: "cloud"})-[:BELONGS_TO_TIER]->(p4:PriceTier) // WHERE (frontend.monthly_cost_usd + backend.monthly_cost_usd + // database.monthly_cost_usd + cloud.monthly_cost_usd) <= $budget // RETURN frontend, backend, database, cloud, // (frontend.monthly_cost_usd + backend.monthly_cost_usd + // database.monthly_cost_usd + cloud.monthly_cost_usd) as total_cost // ORDER BY total_cost ASC, // (frontend.total_cost_of_ownership_score + backend.total_cost_of_ownership_score + // database.total_cost_of_ownership_score + cloud.total_cost_of_ownership_score) DESC // Query 3: Find tools for specific price tier // MATCH (tool:Tool)-[:BELONGS_TO_TIER]->(p:PriceTier {tier_name: $tier_name}) // RETURN tool ORDER BY tool.price_performance_ratio DESC // ===================================================== // COMPLETION STATUS // ===================================================== RETURN "✅ Neo4j Schema Ready for PostgreSQL Migration!" as status, "🎯 Focus: Price-based relationships from existing PostgreSQL data" as focus, "📊 Ready for data migration and relationship creation" as ready_state;