ืžืขืกื™ื ื“ื–ืฉืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก (ื˜ื™ื™ืœ 1): ื“ื™ื–ื™ื™ื ื™ื ื’ ื“ื™ ื‘ืึทื–ืข ืคืจื™ื™ืžื•ื•ืขืจืง

ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ืื™ื‘ืขืจื–ืขืฆืŸ ื’ืขืฉืขืคื˜ ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ ืื™ืŸ ืกืคึผืขืฆื™ืคื™ืฉ ื“ืึทื˜ืŸ ืกื˜ืจืึทืงื˜ืฉืขืจื– ื ื™ืฆืŸ ื“ื™ ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ื“ื™ื–ื™ื™ื ื™ื ื’ ืึท ืฉืœื™ื— ื“ืึทื˜ืึทื‘ื™ื™ืก ืคึฟื•ืŸ ืงืจืึทืฆืŸ.

ืžืขืกื™ื ื“ื–ืฉืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก (ื˜ื™ื™ืœ 1): ื“ื™ื–ื™ื™ื ื™ื ื’ ื“ื™ ื‘ืึทื–ืข ืคืจื™ื™ืžื•ื•ืขืจืง
ืื•ื ื“ื–ืขืจ ื‘ืึทื–ืข ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืึทื–ื•ื™ ื’ืจื•ื™ืก ืื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜, ื•ื•ื™ ื•ื•ืงืึธื ื˜ืึทืงื˜ืข ืึธื“ืขืจ ื‘ืึทื“ืึธืึธ, ืึธื‘ืขืจ "ืึทื–ื•ื™ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ", ืึธื‘ืขืจ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื’ื•ื˜ - ืคืึทื ื’ืงืฉืึทื ืึทืœ, ืฉื ืขืœ ืื•ืŸ ืคึผืึทืกื™ืง ืื•ื™ืฃ ืื™ื™ืŸ ืกืขืจื•ื•ืขืจ PostgreSQL - ืึทื–ื•ื™ ืึทื– ืื™ืจ ืงืขื ืขืŸ ืฆืขื•ื•ื™ืงืœืขืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ื™ืก ืขืจื’ืขืฅ ืื•ื™ืฃ ื“ื™ ื–ื™ื™ึทื˜, ืœืžืฉืœ.

ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ืึธื ืจื™ืจืŸ ื“ื™ ื™ืฉื•ื– ืคื•ืŸ ืฉืึทืจื“ื™ื ื’, ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ืŸ ื’ืขืึธ-ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ืกื™ืกื˜ืขืžืขืŸ, ืึธื‘ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ ืคืึธืงื•ืก ืื•ื™ืฃ ืงืจื™ื™ึทื– ืกืึทืœื•ืฉืึทื ื– ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก.

ืฉืจื™ื˜ 1: ืขื˜ืœืขื›ืข ื’ืขืฉืขืคื˜ ืกืคึผืขืกื™ืคื™ืงืก

ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ืคึผืœืึทืŸ ืื•ื ื“ื–ืขืจ ืžืขืกื™ื“ื–ืฉื™ื ื’ ืึทื‘ืกื˜ืจืึทืงื˜ืœื™, ืึธื‘ืขืจ ื•ื•ืขื˜ ื•ื™ืกืฉื˜ื™ืžืขืŸ ืขืก ืื™ืŸ ื“ื™ ืกื•ื•ื™ื•ื•ืข ืคึฟื™ืจืžืข ื’ืขื–ืขืœืฉืึทืคื˜ืœืขืš ื ืขืฅ. ื“ืึธืก ืื™ื–, ืื•ื ื“ื–ืขืจ ืžืขื ื˜ืฉืŸ ื˜ืึธืŸ ื ื™ื˜ "ื ืึธืจ ืฉื˜ื™ืžืขืŸ," ืึธื‘ืขืจ ื™ื‘ืขืจื’ืขื‘ืŸ ืžื™ื˜ ื™ืขื“ืขืจ ืื ื“ืขืจืข ืื™ืŸ ื“ืขื ืงืึธื ื˜ืขืงืกื˜ ืคื•ืŸ ืกืึทืœื•ื•ื™ื ื’ ื–ื™ื›ืขืจ ื’ืขืฉืขืคื˜ ืคึผืจืึธื‘ืœืขืžืก.

ืื•ืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ื“ื™ ื˜ืึทืกืงืก ืคื•ืŸ ืึท ื’ืขืฉืขืคื˜?.. ืœืึธืžื™ืจ ืงื•ืงืŸ ืื™ืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ื•ื•ืึทืกื™ืœื™, ื“ืขืจ ื”ื•ื™ืคึผื˜ ืคื•ืŸ ื“ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืึธืคึผื˜ื™ื™ืœื•ื ื’.

  • "ื ื™ืงืึธืœืึทื™, ืคึฟืึทืจ ื“ื™ ืึทืจื‘ืขื˜ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืึท ืœืึทื˜ืข ื”ื™ื™ึทื ื˜!"
    ื“ืขื ืžื™ื˜ืœ ืึทื– ืงืึธืจืขืกืคึผืึธื ื“ืขื ืฅ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคื™ืจื˜ ืื™ืŸ ื“ืขื ืงืึธื ื˜ืขืงืกื˜ ืคื•ืŸ ืขื˜ืœืขื›ืข ื“ืขืจ ื“ืึธืงื•ืžืขื ื˜.
  • "ืงืึธืœื™ืึท, ื‘ื™ืกื˜ ืื™ืจ ื’ืขื’ืื ื’ืขืŸ ืฆื• ื“ืึธื˜ืึท ื“ืขื ืึธื•ื•ื ื˜?"
    ืึทื– ืื™ื–, ืืคื™ืœื• ืื™ื™ืŸ ืคึผืึธืจ ืคื•ืŸ ื™ื ื˜ืขืจืœืึทืงื™ืึทื˜ืขืจื– ืงืขื ืขืŸ ื™ื‘ืขืจื’ืขื‘ืŸ ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืกืœื™ ืื•ื™ืฃ ืคืืจืฉื™ื“ืขื ืข ื˜ืขืžืขืก.
  • "ืคืขื˜ืจื•ืก, ื ื™ืงืึธืœื™ื™ึท, ืงื•ืง ืื™ืŸ ื“ื™ ืึทื˜ืึทื˜ืฉืžืึทื ื˜ ืคึฟืึทืจ ื“ื™ ืคึผืจื™ื™ึทื– ืจืฉื™ืžื” ืคึฟืึทืจ ื“ื™ ื ื™ื™ึทืข ืกืขืจื•ื•ืขืจ."
    ืึทื–ื•ื™, ืื™ื™ืŸ ืึธื ื–ืึธื’ ืงืขื ืขืŸ ื”ืึธื‘ืŸ ืขื˜ืœืขื›ืข ืจื™ืกื™ืคึผื™ืึทื ืฅ. ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ืขืจ ืึธื ื–ืึธื’ ืงืขืŸ ืึทื ื˜ื”ืึทืœื˜ืŸ ืึทื˜ืึทื˜ืฉื˜ ื˜ืขืงืขืก.
  • "ืกืขืžื™ืึธืŸ, ืงื•ืง ืื•ื™ืš."
    ืื•ืŸ ืขืก ื–ืึธืœ ื–ื™ื™ืŸ ืึท ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืฆื• ืึทืจื™ื™ึทืŸ ืื™ืŸ ื™ื’ื–ื™ืกื˜ื™ื ื’ ืงืึธืจืขืกืคึผืึธื ื“ืขื ืฅ ืคืึทืจื‘ืขื˜ืŸ ืึท ื ื™ื™ึท ืžื™ื˜ื’ืœื™ื“.

ื–ืืœ ืก ื•ื•ื•ื™ื ืขืŸ ืื•ื™ืฃ ื“ืขื ืจืฉื™ืžื” ืคื•ืŸ "ืงืœืึธืจืขื•ื•ื“ื™ืง" ื‘ืื“ืขืจืคืขื ื™ืฉืŸ ืคึฟืึทืจ ืื™ืฆื˜.

ืึธืŸ ืคืืจืฉื˜ืื ื“ ื“ื™ ื’ืขื•ื•ืขื ื“ื˜ ืกืคึผืขืกื™ืคื™ืงืก ืคื•ืŸ ื“ื™ ืคึผืจืึธื‘ืœืขื ืื•ืŸ ื“ื™ ืœื™ืžื™ื˜ื™ื™ืฉืึทื ื– ื’ืขื’ืขื‘ืŸ ืฆื• ืขืก, ืคึผืœืึทืŸ ืขืคืขืงื˜ื™ื•ื• ื“ืึทื˜ืึทื‘ื™ื™ืก ืกื˜ืฉืขืžืึท ืฆื• ืกืึธืœื•ื•ืข ืขืก ืื™ื– ื›ึผืžืขื˜ ืื•ืžืžืขื’ืœืขืš.

ืฉืจื™ื˜ 2: ืžื™ื ื™ืžืึทืœ ืœืึธื’ื™ืง ืงืจื™ื™ึทื–

ื‘ื™ื– ืื™ืฆื˜, ืึทืœืฅ ืึทืจื‘ืขื˜ ื–ื™ื™ืขืจ ืขื ืœืขืš ืฆื• E- ื‘ืจื™ื•ื• ืงืึธืจืขืกืคึผืึธื ื“ืขื ืฅ - ืึท ื˜ืจืื“ื™ืฆื™ืื ืขืœืŸ ื’ืขืฉืขืคื˜ ื’ืขืฆื™ื™ึทื’. ื™ืึธ, "ืึทืœื’ืึธืจื™ื˜ืžื™ืงืœื™" ืคื™ืœืข ื’ืขืฉืขืคื˜ ืคึผืจืึธื‘ืœืขืžืก ื–ืขื ืขืŸ ืขื ืœืขืš ืฆื• ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ, โ€‹โ€‹ื“ืขืจื™ื‘ืขืจ ื“ื™ ืžื›ืฉื™ืจื™ื ืคึฟืึทืจ ืกืึทืœื•ื•ื™ื ื’ ื–ื™ื™ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืกื˜ืจืึทืงื˜ืฉืขืจืึทืœื™ ืขื ืœืขืš.

ื–ืืœ ืก ืคืึทืจืจื™ื›ื˜ืŸ ื“ื™ ืฉื•ื™ืŸ ื‘ืืงื•ืžืขืŸ ืœืึทื“ื–ืฉื™ืงืึทืœ ื“ื™ืึทื’ืจืึทืžืข ืคื•ืŸ โ€‹โ€‹ืขื ื˜ื™ื˜ื™ ื‘ืืฆื™ื•ื ื’ืขืŸ. ืฆื• ืžืึทื›ืŸ ืื•ื ื“ื–ืขืจ ืžืึธื“ืขืœ ื’ืจื™ื ื’ืขืจ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ, ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื“ื™ ืžืขืจืกื˜ ืคึผืจื™ืžื™ื˜ื™ื•ื• ืึทืจื•ื™ืกื•ื•ื™ื™ึทื–ืŸ ืึธืคึผืฆื™ืข ER ืžืึธื“ืขืœืก ืึธืŸ ื“ื™ ืงืึทืžืคึผืœืึทืงื™ื™ืฉืึทื ื– ืคื•ืŸ UML ืึธื“ืขืจ IDEF ื ืึธื•ื˜ื™ื™ืฉืึทื ื–:

ืžืขืกื™ื ื“ื–ืฉืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก (ื˜ื™ื™ืœ 1): ื“ื™ื–ื™ื™ื ื™ื ื’ ื“ื™ ื‘ืึทื–ืข ืคืจื™ื™ืžื•ื•ืขืจืง

ืื™ืŸ ืื•ื ื“ื–ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ืขืจ ืžืขื ื˜ืฉ, ื“ืึธืงื•ืžืขื ื˜ ืื•ืŸ ื‘ื™ื™ื ืขืจื™ "ื’ื•ืฃ" ืคื•ืŸ ื“ืขืจ ื˜ืขืงืข ื–ืขื ืขืŸ "ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง" ืขื ื˜ื™ื˜ื™ื– ื•ื•ืึธืก ืขืงืกื™ืกื˜ื™ืจืŸ ื™ื ื“ื™ืคึผืขื ื“ืึทื ื˜ืœื™ ืึธืŸ ืื•ื ื“ื–ืขืจ ื“ื™ื ืกื˜. ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ื•ื•ืขืœืŸ ืคืฉื•ื˜ ื–ืขืŸ ื–ื™ื™ ืื™ืŸ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜ ื•ื•ื™ ืขื˜ืœืขื›ืข ืœื™ื ืงืก "ืขืจื’ืขืฅ" ื“ื•ืจืš UUID.

ืฆื™ืขืŸ ื“ื™ื™ืึทื’ืจืึทืžื– ื•ื•ื™ ืคึผืฉื•ื˜ ื•ื•ื™ ืžืขื’ืœืขืš - ืจื•ื‘ึฟ ืคื•ืŸ ื“ื™ ืžืขื ื˜ืฉืŸ ืื™ืจ ื•ื•ืขื˜ ื•ื•ื™ื™ึทื–ืŸ ื–ื™ื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืขืงืกืคึผืขืจืฅ ืื™ืŸ ืœื™ื™ืขื ืขืŸ UML/IDEF. ืึธื‘ืขืจ ื–ื™ื™ืŸ ื–ื™ื›ืขืจ ืฆื• ืฆื™ืขืŸ.

ื˜ืจืขื˜ืŸ 3: ืกืงืขื˜ืฉื™ื ื’ ื“ื™ ื˜ื™ืฉ ืกื˜ืจื•ืงื˜ื•ืจ

ื•ื•ืขื’ืŸ ื˜ื™ืฉ ืื•ืŸ ืคืขืœื“ ื ืขืžืขืŸื“ื™ "ืจื•ืกื™ืฉืข" ื ืขืžืขืŸ ืคื•ืŸ ืคืขืœื“ืขืจ ืื•ืŸ ื˜ื™ืฉืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืื”ืื ื“ืœื˜ ืึทื ื“ืขืจืฉ, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ืึท ืขื ื™ืŸ ืคื•ืŸ ื’ืขืฉืžืึทืง. ื•ื•ื™ื™ึทืœ ื“ื™ ื“ืึธ ืื™ืŸ Tensor ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ืคืจืขืžื“ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก, ืื•ืŸ PostgreSQL ืึทืœืึทื•ื– ืื•ื ื“ื– ืฆื• ื’ืขื‘ืŸ ื ืขืžืขืŸ ืืคื™ืœื• ืื™ืŸ ื›ื™ื™ืจืึธื•ื’ืœื™ืคืก, ืื•ื™ื‘ ื–ื™ื™ ืขื ืงืœืึธื•ื–ื“ ืื™ืŸ ืงื•ื•ืึธื˜ืขืก, ื“ืขืžืึธืœื˜ ืžื™ืจ ื‘ืขืกืขืจ ืฆื• ื ืึธืžืขืŸ ืึทื‘ื“ื–ืฉืขืงืฅ ืึทื ืึทืžื‘ื™ื’ื™ื•ืึทืกืœื™ ืื•ืŸ ืงืœืืจ ืึทื–ื•ื™ ืึทื– ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ื“ื™ืกืงืจืขืคึผืึทื ืกื™ื–.
ื–ื™ื ื˜ ืคื™ืœืข ืžืขื ื˜ืฉืŸ ืฉืจื™ื™ึทื‘ืŸ ืึทืจื˜ื™ืงืœืขืŸ ืฆื• ืื•ื ื“ื– ืื™ืŸ ืึทืžืึธืœ, ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹ื–ื™ื™ ืงืขืŸ ืืคื™ืœื• ื˜ืึธืŸ ื“ืึธืก ืึธืคืคืœื™ื ืข, ื“ืขืžืึธืœื˜ ื“ืขืจ ืกื™ืžืคึผืœืึทืกื˜ ืึธืคึผืฆื™ืข ืื™ื– ื ื•ืฆืŸ UUIDs ื•ื•ื™ ื™ื“ืขื ื˜ื™ืคื™ืขืจืก ื ื™ื˜ ื‘ืœื•ื™ื– ืคึฟืึทืจ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืขื ื˜ื™ื˜ื™ื–, ืึธื‘ืขืจ ืื•ื™ืš ืคึฟืึทืจ ืึทืœืข ืึทื‘ื“ื–ืฉืขืงืฅ ืื™ืŸ ืื•ื ื“ื–ืขืจ ื“ื™ื ืกื˜. ื“ืขืจืฆื•, ื–ื™ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืืคื™ืœื• ืื•ื™ืฃ ื“ื™ ืงืœื™ืขื ื˜ ื–ื™ื™ึทื˜ - ื“ืึธืก ื•ื•ืขื˜ ื”ืขืœืคึฟืŸ ืื•ื ื“ื– ืฉื˜ื™ืฆืŸ ืฉื™ืงืŸ ืึทืจื˜ื™ืงืœืขืŸ ื•ื•ืขืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ื– ื˜ืขืžืคึผืขืจืขืจืึทืœื™ ืึทื ืึทื•ื•ื™ื™ืœืึทื‘ืึทืœ ืื•ืŸ ื“ื™ ืœื™ืงืขืœื™ื”ืึธืึธื“ ืคื•ืŸ ืึท ืฆื•ื ื•ื™ืคืฉื˜ื•ื™ืก ืื™ื– ื’ืึธืจ ื ื™ื“ืขืจื™ืง.

ื“ืขืจ ืคึผืœืึทืŸ ื˜ื™ืฉ ืกื˜ืจื•ืงื˜ื•ืจ ืื™ืŸ ืื•ื ื“ื–ืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก ื•ื•ืขื˜ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก:
ื˜ื™ืฉืŸ: ืจื•

CREATE TABLE "ะขะตะผะฐ"(
  "ะขะตะผะฐ"
    uuid
      PRIMARY KEY
, "ะ”ะพะบัƒะผะตะฝั‚"
    uuid
, "ะะฐะทะฒะฐะฝะธะต"
    text
);

CREATE TABLE "ะกะพะพะฑั‰ะตะฝะธะต"(
  "ะกะพะพะฑั‰ะตะฝะธะต"
    uuid
      PRIMARY KEY
, "ะขะตะผะฐ"
    uuid
, "ะะฒั‚ะพั€"
    uuid
, "ะ”ะฐั‚ะฐะ’ั€ะตะผั"
    timestamp
, "ะขะตะบัั‚"
    text
);

CREATE TABLE "ะะดั€ะตัะฐั‚"(
  "ะกะพะพะฑั‰ะตะฝะธะต"
    uuid
, "ะŸะตั€ัะพะฝะฐ"
    uuid
, PRIMARY KEY("ะกะพะพะฑั‰ะตะฝะธะต", "ะŸะตั€ัะพะฝะฐ")
);

CREATE TABLE "ะคะฐะนะป"(
  "ะคะฐะนะป"
    uuid
      PRIMARY KEY
, "ะกะพะพะฑั‰ะตะฝะธะต"
    uuid
, "BLOB"
    uuid
, "ะ˜ะผั"
    text
);

ื˜ื™ืฉืŸ: ืขืŸ

CREATE TABLE theme(
  theme
    uuid
      PRIMARY KEY
, document
    uuid
, title
    text
);

CREATE TABLE message(
  message
    uuid
      PRIMARY KEY
, theme
    uuid
, author
    uuid
, dt
    timestamp
, body
    text
);

CREATE TABLE message_addressee(
  message
    uuid
, person
    uuid
, PRIMARY KEY(message, person)
);

CREATE TABLE message_file(
  file
    uuid
      PRIMARY KEY
, message
    uuid
, content
    uuid
, filename
    text
);

ื“ื™ ืกื™ืžืคึผืœืึทืกื˜ ื–ืึทืš ื•ื•ืขืŸ ื“ื™ืกืงืจื™ื™ื‘ื™ื ื’ ืึท ืคึฟืึธืจืžืึทื˜ ืื™ื– ืฆื• ืึธื ื”ื™ื™ื‘ืŸ "ืึทื ื•ื•ื™ื™ื ื“ื™ื ื’" ื“ื™ ืงืฉืจ ื’ืจืึทืคื™ืง ืคื•ืŸ ื˜ื™ืฉืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ืจืขืคืขืจืึทื ืกื˜ ื–ื™ืš ืฆื• ืงื™ื™ื ืขื.

ื˜ืจืขื˜ืŸ 4: ื’ืขืคึฟื™ื ืขืŸ ื–ื™ืš ื ื™ื˜-ืงืœืึธืจืขื•ื•ื“ื™ืง ื‘ืื“ืขืจืคืขื ื™ืฉืŸ

ืึทื– ืก ืขืก, ืžื™ืจ ื”ืึธื‘ืŸ ื“ื™ื–ื™ื™ื ื“ ืึท ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ืŸ ื•ื•ืึธืก ืื™ืจ ืงืขื ืขืŸ ืฉืจื™ื™ึทื‘ืŸ ื‘ื™ืฉืœื™ื™ืžืขืก ืื•ืŸ ืขืคืขืก ืฆื• ืœื™ื™ืขื ืขืŸ.

ืœืึธืžื™ืจ ื–ื™ืš ืฉื˜ืขืœืŸ ืื™ืŸ ื“ื™ ืฉื™ืš ืคื•ืŸ ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ื“ื™ื ืกื˜ - ื•ื•ืึธืก ื˜ืึธืŸ ืžื™ืจ ื•ื•ืขืœืŸ ืฆื• ื˜ืึธืŸ ืžื™ื˜ ืื™ื?

  • ืœืขืฆื˜ืข ืึทืจื˜ื™ืงืœืขืŸ
    ืขืก ื›ืจืึธื ืึธืœืึธื’ื™ืฉ ืื•ื™ืกื’ืขืฉื˜ืขืœื˜ ืึท ืจืขื’ื™ืกื˜ืจื™ ืคื•ืŸ "ืžื™ื™ืŸ" ืึทืจื˜ื™ืงืœืขืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืคืึทืจืฉื™ื“ืŸ ืงืจื™ื™ื˜ื™ืจื™ืึท. ื•ื•ื• ืื™ืš ื‘ื™ืŸ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืจื™ืกื™ืคึผื™ืึทื ืฅ, ื•ื•ื• ืื™ืš ื‘ื™ืŸ ื“ืขืจ ืžื—ื‘ืจ, ื•ื•ื• ื–ื™ื™ ื’ืขืฉืจื™ื‘ืŸ ืฆื• ืžื™ืจ ืื•ืŸ ืื™ืš ื”ืื‘ ื ื™ืฉื˜ ื’ืขืขื ื˜ืคืขืจื˜, ื•ื•ื• ื–ื™ื™ ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื’ืขืขื ื˜ืคืขืจื˜ ืžื™ืจ, ...
  • ืคึผืึทืจื˜ื™ืกืึทืคึผืึทื ืฅ ืคื•ืŸ ื“ื™ ืงืึธืจืขืกืคึผืึธื ื“ืขื ืฅ
    ื•ื•ืขืจ ืื™ื– ืืคื™ืœื• ืคึผืึทืจื˜ื™ืกืึทืคึผื™ื™ื˜ื™ื ื’ ืื™ืŸ ื“ืขื ืœืึทื ื’, ืœืึทื ื’ ืฉืžื•ืขืก?

ืื•ื ื“ื–ืขืจ ืกื˜ืจื•ืงื˜ื•ืจ ืึทืœืึทื•ื– ืื•ื ื“ื– ืฆื• ืกืึธืœื•ื•ืข ื‘ื™ื™ื“ืข ื“ื™ ืคืจืื‘ืœืขืžืขืŸ "ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ," ืึธื‘ืขืจ ื ื™ืฉื˜ ื’ืขืฉื•ื•ื™ื ื“. ื“ื™ ืคึผืจืึธื‘ืœืขื ืื™ื– ืึทื– ืคึฟืึทืจ ืกืึธืจื˜ื™ื ื’ ื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืึทืจื‘ืขื˜ ื ื™ื˜ ื’ืขืงืขื ื˜ ืฆื• ืฉืึทืคึฟืŸ ืื™ื ื“ืขืงืก, ืคึผืึทืกื™ืง ืคึฟืึทืจ ื™ืขื“ืขืจ ืคื•ืŸ ื“ื™ ืคึผืึทืจื˜ื™ืกืึทืคึผืึทื ืฅ (ืื•ืŸ ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ืขืงืกื˜ืจืึทืงื˜ ืึทืœืข ื“ื™ ืจืขืงืึธืจื“ืก), ืื•ืŸ ืฆื• ืกืึธืœื•ื•ืข ื“ื™ ืจื’ืข ืื™ืจ ื“ืึทืจืคึฟืŸ ืขืงืกื˜ืจืึทืงื˜ ืึทืœืข ืึทืจื˜ื™ืงืœืขืŸ ืื•ื™ืฃ ื“ืขื ื˜ืขืžืข.

ืึทื ื™ื ื˜ืขื ื“ื™ื“ ื‘ืึทื ื™ืฆืขืจ ื˜ืึทืกืงืก ื–ืืœ ืฉื˜ืขืœืŸ ื“ืจื™ื™ืกื˜ ืงืจื™ื™ึทื– ืื•ื™ืฃ ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ื™ื˜ื™.

ืฉืจื™ื˜ 5: ืกืžืึทืจื˜ ื“ืขื ืึธืจืžืึทืœื™ื–ืึทื˜ื™ืึธืŸ

ื‘ื™ื™ื“ืข ืคื•ืŸ โ€‹โ€‹ืื•ื ื“ื–ืขืจ ืคึผืจืึธื‘ืœืขืžืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“ ื“ื•ืจืš ื ืึธืš ื˜ื™ืฉืŸ ืื™ืŸ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื“ื•ืคึผืœื™ืงืึทื˜ ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ื“ืึทื˜ืŸ, ื ื™ื™ื˜ื™ืง ืฆื• ืคืึธืจืขื ืื•ื™ืฃ ื–ื™ื™ ื™ื ื“ื™ืกื™ื– ืคึผืึทืกื™ืง ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ื˜ืึทืกืงืก.
ืžืขืกื™ื ื“ื–ืฉืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก (ื˜ื™ื™ืœ 1): ื“ื™ื–ื™ื™ื ื™ื ื’ ื“ื™ ื‘ืึทื–ืข ืคืจื™ื™ืžื•ื•ืขืจืง

ื˜ื™ืฉืŸ: ืจื•

CREATE TABLE "ะ ะตะตัั‚ั€ะกะพะพะฑั‰ะตะฝะธะน"(
  "ะ’ะปะฐะดะตะปะตั†"
    uuid
, "ะขะธะฟะ ะตะตัั‚ั€ะฐ"
    smallint
, "ะ”ะฐั‚ะฐะ’ั€ะตะผั"
    timestamp
, "ะกะพะพะฑั‰ะตะฝะธะต"
    uuid
, PRIMARY KEY("ะ’ะปะฐะดะตะปะตั†", "ะขะธะฟะ ะตะตัั‚ั€ะฐ", "ะกะพะพะฑั‰ะตะฝะธะต")
);
CREATE INDEX ON "ะ ะตะตัั‚ั€ะกะพะพะฑั‰ะตะฝะธะน"("ะ’ะปะฐะดะตะปะตั†", "ะขะธะฟะ ะตะตัั‚ั€ะฐ", "ะ”ะฐั‚ะฐะ’ั€ะตะผั" DESC);

CREATE TABLE "ะฃั‡ะฐัั‚ะฝะธะบะขะตะผั‹"(
  "ะขะตะผะฐ"
    uuid
, "ะŸะตั€ัะพะฝะฐ"
    uuid
, PRIMARY KEY("ะขะตะผะฐ", "ะŸะตั€ัะพะฝะฐ")
);

ื˜ื™ืฉืŸ: ืขืŸ

CREATE TABLE message_registry(
  owner
    uuid
, registry
    smallint
, dt
    timestamp
, message
    uuid
, PRIMARY KEY(owner, registry, message)
);
CREATE INDEX ON message_registry(owner, registry, dt DESC);

CREATE TABLE theme_participant(
  theme
    uuid
, person
    uuid
, PRIMARY KEY(theme, person)
);

ื“ืึธ ืžื™ืจ ื”ืึธื‘ืŸ ื’ืขื•ื•ืขื ื“ื˜ ืฆื•ื•ื™ื™ ื˜ื™ืคึผื™ืฉ ืึทืคึผืจืึธื•ื˜ืฉื™ื– ื’ืขื ื™ืฆื˜ ื•ื•ืขืŸ ืงืจื™ื™ื™ื˜ื™ื ื’ ืึทื’ื–ื™ืœื™ืขืจื™ ื˜ื™ืฉืŸ:

  • ืžืึทืœื˜ืึทืคึผืœื™ื™ื™ื ื’ ืจืขืงืึธืจื“ืก
    ื ื™ืฆืŸ ืื™ื™ืŸ ืขืจืฉื˜ ืึธื ื–ืึธื’ ืจืขืงืึธืจื“, ืžื™ืจ ืžืึทื›ืŸ ืขื˜ืœืขื›ืข ื ืึธื›ื’ื™ื™ืŸ-ืึทืจื•ื™ืฃ ืจืขืงืึธืจื“ืก ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ื˜ื™ื™ืคึผืก ืคื•ืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืขื ืข ืึธื•ื ืขืจื– - ื‘ื™ื™ื“ืข ืคึฟืึทืจ ื“ื™ ืึธืคึผืฉื™ืงืขืจ ืื•ืŸ ืคึฟืึทืจ ื“ื™ ื‘ืึทืงื•ืžืขืจ. ืื‘ืขืจ ื™ืขื“ืขืจ ืคื•ืŸ ื“ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืื™ืฆื˜ ืคืืœืŸ ืื•ื™ืฃ ื“ื™ ืื™ื ื“ืขืงืก - ื ืึธืš ืึทืœืข, ืื™ืŸ ืึท ื˜ื™ืคึผื™ืฉ ืคืึทืœ, ืžื™ืจ ื•ื•ืขืœืŸ ื•ื•ืขืœืŸ ืฆื• ื–ืขืŸ ื‘ืœื•ื™ื– ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ืœืึทื˜.
  • ื™ื™ื ืฆื™ืง ืจืขืงืึธืจื“ืก
    ื™ืขื“ืขืจ ืžืึธืœ ืื™ืจ ืฉื™ืงืŸ ืึท ืึธื ื–ืึธื’ ืื™ืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื˜ืขืžืข, ืขืก ืื™ื– ื’ืขื ื•ื’ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืฆื™ ืึทื–ืึท ืึท ืคึผืึธื–ื™ืฆื™ืข ืื™ื– ืฉื•ื™ืŸ ืขืงืกื™ืกื˜ื™ืจื˜. ืื•ื™ื‘ ื ื™ื˜, ืœื™ื™ื’ ืขืก ืฆื• ืื•ื ื“ื–ืขืจ "ื•ื•ืขืจื˜ืขืจื‘ื•ืš".

ืื™ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ื˜ื™ื™ืœ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืคึผืึทืจื˜ื™ืฉืึทื ื™ื ื’ ืื™ืŸ ื“ื™ ืกื˜ืจื•ืงื˜ื•ืจ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’