Π‘Π»ΠΎΠΆΠ½ΡΠ΅ SQL ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π² PostgreSQL: ΡΠ΅ΡΠ°Π΅ΠΌ Π·Π°Π΄Π°ΡΠΈ Π±ΠΈΠ·Π½Π΅ΡΠ°
Introduction and Problem Statement
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π±ΠΈΠ·Π½Π΅Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΡΡ Ρ ΡΠ°ΡΡΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ. Π ΡΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΡΠ΅ΡΡΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΠΌΠ΅ΡΠ°Π΅ΡΠ΅, ΡΡΠΎ Π²Π°ΡΠΈ SQL-Π·Π°ΠΏΡΠΎΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ, Π° ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π² PostgreSQL.
Π₯ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΆΠ΅ΡΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΠΈ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π°Π½Π½ΡΡ .
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΡ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΡΠ΅ΠΌΡ Π±ΠΈΠ·Π½Π΅ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΡΡ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°ΠΌΠΈ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠΎΠ²Π΅ΡΠ°ΠΌΠΈ ΠΏΠΎ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² PostgreSQL.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ?
Π₯ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΡΡ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΡΡΠΊΡΡΡΡ. ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ:
- Π₯ΡΠ°Π½ΠΈΠΌΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°: ΠΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, Π²ΡΠ·ΡΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
- Π€ΡΠ½ΠΊΡΠΈΡ: ΠΠ±ΡΡΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΎΡΡΠ°Π²Π΅ Π΄ΡΡΠ³ΠΈΡ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ². Π€ΡΠ½ΠΊΡΠΈΠΈ Π² PostgreSQL ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ , Π²ΠΊΠ»ΡΡΠ°Ρ PL/pgSQL, Python ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²: ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π° ΡΡΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π· ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠΎΠΌ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΡΠ΅ΠΌΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ SQL ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π²Π°ΡΠ΅ΠΌΡ Π±ΠΈΠ·Π½Π΅ΡΡ?
Π ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΡΠ°ΡΡΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΠΈ Π±ΠΈΠ·Π½Π΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΡΡΡΠΎ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΌΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄Π°Π½Π½ΡΡ ΡΠ°ΡΡΠΎ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΡ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡ Π²Π°ΠΆΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π±ΠΈΠ·Π½Π΅ΡΠ°:
- Π‘ΠΊΠΎΡΠΎΡΡΡ: Π₯ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
- ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ: ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π³ΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² Π΅Π΄ΠΈΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΈΡΠΊΠ»ΡΡΠ°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ: ΠΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ Π·Π°Π΄Π°ΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²ΡΠ΅ΠΌΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ².
- ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ: Π‘Π»ΠΎΠΆΠ½ΡΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΡ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π»Π΅Π³ΠΊΠΎ Π°Π΄Π°ΠΏΡΠΈΡΡΡΡΡΡ ΠΊ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
"ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π² PostgreSQL ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π°ΠΌ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° 40%, ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΠ»ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΠ΄Π΅Π»Π°."
ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π² ΡΠ°ΠΊΠΈΡ ΠΎΠ±Π»Π°ΡΡΡΡ , ΠΊΠ°ΠΊ e-commerce, ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠΉ Π°Π½Π°Π»ΠΈΠ·, Π»ΠΎΠ³ΠΈΡΡΠΈΠΊΠ° ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠ°ΠΌΠΈ ΠΏΠΎΡΡΠ°Π²ΠΎΠΊ, Π³Π΄Π΅ ΡΠΎΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½Ρ.
Technical Approach and Best Practices
ΠΠ»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π²Π°ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΡΠ΄Ρ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²Π°ΡΠ΅ΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ²:
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²: Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ WHERE ΠΈ JOIN, ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ².
- ΠΠ½Π°Π»ΠΈΠ· ΠΏΠ»Π°Π½ΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
EXPLAINΠΈΠ»ΠΈEXPLAIN ANALYZE, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ PostgreSQL Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΡ, ΠΈ Π²ΡΡΠ²ΠΈΡΡ "ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ°". - ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ: ΠΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ DISTINCT, UNION ALL, ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ.
- ΠΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ : Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ»ΡΡΡΠΈΡΡ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΡΡ Π΅ΠΌΡ.
Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ
ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ Π·Π°Π΄Π°ΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΡΠ°ΡΡΠΈ:
- Π Π°Π·Π±Π΅ΠΉΡΠ΅ Π±ΠΎΠ»ΡΡΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΡΠ°Π³ΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ CTE (Common Table Expressions), ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌΠΈ ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ.
- ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ
PostgreSQL ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 11. ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ:
CREATE OR REPLACE PROCEDURE transfer_funds(
from_account INT,
to_account INT,
amount NUMERIC)
LANGUAGE plpgsql
AS $$
BEGIN
UPDATE accounts SET balance = balance - amount WHERE id = from_account;
UPDATE accounts SET balance = balance + amount WHERE id = to_account;
COMMIT;
END;
$$;
ΠΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π³ΠΎΠ² (ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ΅Π΄ΡΡΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ΅ΡΠ°ΠΌΠΈ) Π² Π΅Π΄ΠΈΠ½ΡΠΉ Π±Π»ΠΎΠΊ, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΡ ΡΠΈΡΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΠΎΠ²ΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΠ· ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ
ΠΠ΅ΠΉΡ: Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ Π² ΡΠΈΡΠ΅ΠΉΠ»Π΅
ΠΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΡΠ΅Π΄Π½ΡΡ ΡΠΎΠ·Π½ΠΈΡΠ½Π°Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΎΡΡΠ΅ΡΠΎΠ². ΠΡ Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΡΠΎΠ², ΡΡΠΎ ΡΠΎΡΠΌΠΎΠ·ΠΈΠ»ΠΎ ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ , ΡΠΎΠΊΡΠ°ΡΠΈΠ² Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΡΡΠ΅ΡΠΎΠ² Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΈΠ½ΡΡ.
Π£Π·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ.
ΠΠ΅ΠΉΡ: Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ»Π°Π΄ΡΠΊΠΈΠΌΠΈ ΠΎΡΡΠ°ΡΠΊΠ°ΠΌΠΈ
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΈΠ· ΡΡΠ΅ΡΡ Π»ΠΎΠ³ΠΈΡΡΠΈΠΊΠΈ Π²Π½Π΅Π΄ΡΠΈΠ»Π° ΡΠ»ΠΎΠΆΠ½ΡΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠ°ΡΠ°ΠΌΠΈ Π½Π° ΡΠΊΠ»Π°Π΄Π΅. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ, CTE ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΎΠΊΡΠ°ΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΡΠ΅ΡΠ° Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ° ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½Π½ΠΎΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘Π»ΠΎΠΆΠ½ΡΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΡ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π² PostgreSQL β ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΠΌΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΈ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π΄Π΅ΡΠΆΠ΅ΠΊ, ΠΏΠΎΠΌΠΎΠ³Π°Ρ Π²Π°ΡΠ΅ΠΌΡ Π±ΠΈΠ·Π½Π΅ΡΡ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΡΠΌ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π±ΡΡΡΡΠΎ ΠΌΠ΅Π½ΡΡΡΠ΅Π³ΠΎΡΡ ΡΡΠ½ΠΊΠ°.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²Π½Π΅Π΄ΡΠΈΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΡ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π·Π°ΠΏΠΈΡΠΈΡΠ΅ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΡ. ΠΠ°ΡΠΈ ΡΠΊΡΠΏΠ΅ΡΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½Π΅ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·Ρ Π²Π°ΡΠ΅ΠΌΡ Π±ΠΈΠ·Π½Π΅ΡΡ.




