แ แแแแ แจแแแแซแแแแ แแแ แแแแแ แแแแแแกแแก แแแแฎแแแแแแ แแแแแชแแแแ แแแแแ แแขแฃแ แกแขแ แฃแฅแขแฃแ แแแจแ แแแกแแแฏแแ แแก แแแแแชแแแแ แแแแแก แแฃแแแแแ แแแแแแแแก แแแแแแแแแก แแแแแงแแแแแแ.
- แแแฌแแแ 1: แแแแแก แฉแแ แฉแแก แแแแแแแ
แแแฌแแแ 2: แแแแงแแคแแแแแ "แแแแแแแกแแแแก"
แฉแแแแ แแแแ แแ แแฅแแแแ แแกแแแ แแแแ แแ แแแแแฌแแแแแฃแแ,
แแแแขแแ, แฉแแแ แแ แจแแแแฎแแแแ แจแแ แฌแงแแแก, แ แแแแแแแชแแแกแ แแ แแแ-แแแแแฌแแแแแฃแแ แกแแกแขแแแแแแก แกแแแแแฎแแแก, แแแแ แแ แงแฃแ แแแฆแแแแก แแแแแแแฎแแแแแแ แแแแแชแแแแ แแแแแก แจแแแแแ แแแแ แแกแฅแแแแก แแแแแฌแงแแแขแแแแ.
แแแแแฏแ 1: แแแแแแ แแ แแแแแแกแแก แกแแแชแแคแแแ
แฉแแแ แแ แแแแแแฎแแแแแ แฉแแแแก แจแแขแงแแแแแแแแแก แแแกแขแ แแฅแขแฃแแแ, แแ แแแแ แแแแแแ แแแแแแแ แแแก แแแ แแแแจแ
แแ แ แ แแแแชแแแแแ แแฅแแก แแแแแแกแก?.. แแแแแแฎแแแแ แแแแแแแแ แแแแก แแแแแ แขแแแแแขแแก แฃแคแ แแกแแก แแแกแแแแก แแแแแแแแ.
- โแแแแแแแ, แแ แแแแชแแแแกแแแแก แฉแแแ แแแญแแ แแแแ แแฆแแก แแแขแฉแ!โ
แแก แแแจแแแแก, แ แแ แแแแแฌแแ แ แจแแแซแแแแ แแแแฎแแ แชแแแแแแก แแแแแแ แแแก แแแแขแแฅแกแขแจแ แแแแฃแแแแขแ. - - แแแแแ, แแ แกแแฆแแแแก แแแขแแจแ แแแแแฎแแ ?
แแแฃ แแแแแแแกแแฃแแ แแก แแ แ แฌแงแแแแกแแช แแ แจแแฃแซแแแ แแ แแแ แแฃแแแ แแแแฃแแแแแชแแ แกแฎแแแแแกแฎแแ แแแแแแ. - โแแแขแแ , แแแแแแแ, แแฎแแแแ แแแแแ แแจแ แแฎแแแ แกแแ แแแ แแก แคแแกแแแแก แกแแ.โ
แแกแ แ แแ, แแ แแ แจแแขแงแแแแแแแ แจแแแซแแแแ แฐแฅแแแแแก แ แแแแแแแแ แแแแฆแแแ. แแ แจแแแแฎแแแแแจแ, แจแแขแงแแแแแแแ แจแแแซแแแแ แจแแแชแแแแแก แฒแแแแแ แแแฃแแ แคแแแแแแ. - "แกแแแแแ, แจแแแช แจแแฎแแแ."
แแ แฃแแแ แแ แกแแแแแแแก แจแแกแแซแแแแแแแ แจแแแแแแก แแ แกแแแฃแ แแแแแฌแแ แแจแ แแแแฌแแแ แแฎแแแ แฌแแแ แ.
แแแแแ, แแฎแแ แแแกแแฃแแ แแ "แแจแแแ แ" แกแแญแแ แแแแแแแก แแ แกแแแแ.
แแ แแแแแแแก แแแแแงแแแแแแแ แกแแแชแแคแแแแกแ แแ แแแกแแแแก แแแชแแแฃแแ แจแแแฆแฃแแแแแแก แแแแแแแก แแแ แแจแ, แแแแแแแ แแคแแฅแขแฃแ แ แแแแแชแแแแ แแแแแก แกแฅแแแแก แแแแแญแ แ แแแแฅแแแก แจแแฃแซแแแแแแแ.
แแแแแฏแ 2: แแแแแแแแฃแ แ แแแแแแฃแ แ แฌแ แ
แฏแแ แฏแแ แแแแ, แงแแแแแคแแ แ แซแแแแแ แฐแแแแก แแแแฅแขแ แแแฃแแ แคแแกแขแแก แแแแแฌแแ แแก - แขแ แแแแชแแฃแแ แแแแแแก แแแกแขแ แฃแแแแขแ. แแแแฎ, "แแแแแ แแแแฃแแแ" แแแแ แ แแแแแแก แแ แแแแแแ แแ แแแแแแแแก แแกแแแแกแแ, แแแแขแแ แแแแ แแแแแญแ แแก แแแกแขแ แฃแแแแขแแแ แกแขแ แฃแฅแขแฃแ แฃแแแ แแกแแแแกแ แแฅแแแแ.
แแแแแคแแฅแกแแ แแ แแ แแแฃแแแแแก แฃแ แแแแ แแแแแก แฃแแแ แแแฆแแแฃแแ แแแแแแฃแ แ แแแแแ แแแ. แฉแแแแ แแแแแแแก แแแกแแแแแแ, แฉแแแ แแแแแแแงแแแแแ แแแ แแแแก แงแแแแแแ แแ แแแแขแแฃแ แแแ แแแแขแก
แฉแแแแก แแแแแแแแจแ, แคแแแแแก แแแ แ, แแแแฃแแแแขแ แแ แแ แแแแแ โแกแฎแแฃแแโ แแ แแก โแแแ แโ แแ แแแฃแแแแ, แ แแแแแแแช แแแแแฃแแแแแแแแ แแ แกแแแแแแ แฉแแแแ แกแแ แแแกแแก แแแ แแจแ. แแแแขแแ, แฉแแแ แแแ แแแแแแแแจแ แฃแแ แแแแ แแฆแแแฅแแแแ, แ แแแแ แช UUID-แแก แแแแ โแกแแแฆแแชโ แแแฃแแแแก.
แแแฎแแขแ แแแแแ แแแแแ แ แแช แจแแแซแแแแ แแแ แขแแแแ - แแแแแแแแแแแก แฃแแแขแแกแแแ, แ แแแแแแกแแช แแฉแแแแแแ, แแ แแ แแแ UML/IDEF แแแแฎแแแก แแฅแกแแแ แขแแแ. แแแแ แแ แแฃแชแแแแแแแ แแแฎแแขแ.
แแแแแฏแ 3: แชแฎแ แแแแก แกแขแ แฃแฅแขแฃแ แแก แแแฎแแแแ
แชแฎแ แแแแแแกแ แแ แแแแแแแก แกแแฎแแแแแแก แจแแกแแฎแแแแแแแแแกแ แแ แชแฎแ แแแแแแก "แ แฃแกแฃแแ" แกแแฎแแแแแ แจแแแซแแแแ แแแแกแฎแแแแแแฃแแแ แแแแแฎแแแแแแแแก, แแแแ แแ แแก แแแแแแแแแแก แกแแแแแฎแแ. แฒแแแขแแ แ แแ
แแแแแแแแ แแแแ แ แแแแแแแแ แแ แแแ แแฃแแแ แแแแฌแแ แก แจแแขแงแแแแแแแแแก, แแแแแแ แแแ แแแแแแแแ แจแแแซแแแแ แแก แแแแแแแแก แฎแแแแแ แแจแ, แแแจแแ แฃแแแ แขแแแแกแ แแแ แแแแขแแ แแแแแแงแแแแ UUID-แแแ, แ แแแแ แช แแแแแขแแคแแแแขแแ แแแ แแ แ แแฎแแแแ แแแ แ แกแฃแแแแฅแขแแแแกแแแแก, แแ แแแแ แฉแแแแ แกแแ แแแกแแก แจแแแแแ แแ แกแแแฃแแ แงแแแแ แแแแแฅแขแแกแแแแก. แฃแคแ แ แแแขแแช, แแแแ แแแแแ แแ แแแ แจแแกแแซแแแแแแแ แแแแแแขแแก แแฎแแ แแกแแช แแ - แแก แแแแแแฎแแแ แแแ แจแแขแงแแแแแแแแแแก แแแแแแแแแจแ, แ แแแแกแแช แแแแแชแแแแ แแแแ แแ แแแแแ แแแฃแฌแแแแแแแแ แแ แจแแฏแแฎแแแแก แแแแแแแแ แฃแแแแฃแ แแกแแ แแแแแแแ.
แชแฎแ แแแแก แแ แแแฅแขแ แฉแแแแก แแแแแชแแแแ แแแแแจแ แแกแ แแแแแแงแฃแ แแแ:
แแแแแแแแ: RU
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
);
แแแแแแแแ: EN
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: แญแแแแแแ แแแแแ แแแแแแแชแแ
แฉแแแแ แแ แแแ แแ แแแแแแ แแแแแแ แแแแ แแแแแขแแแแแ แชแฎแ แแแแแแ, แ แแแแแแจแแช แฉแแแ แแแแแแแแ แแแ แแแแแชแแแแแแก แแแฌแแแแก แแฃแแแแแแขแ, แแฃแชแแแแแแแแ แแแแแ แฉแแแแ แแแแชแแแแแแกแแแแก แจแแกแแคแแ แแกแ แแแแแฅแกแแแแก แฉแแแแงแแแแแแแ.
แแแแแแแแ: RU
CREATE TABLE "ะ ะตะตัััะกะพะพะฑัะตะฝะธะน"(
"ะะปะฐะดะตะปะตั"
uuid
, "ะขะธะฟะ ะตะตัััะฐ"
smallint
, "ะะฐัะฐะัะตะผั"
timestamp
, "ะกะพะพะฑัะตะฝะธะต"
uuid
, PRIMARY KEY("ะะปะฐะดะตะปะตั", "ะขะธะฟะ ะตะตัััะฐ", "ะกะพะพะฑัะตะฝะธะต")
);
CREATE INDEX ON "ะ ะตะตัััะกะพะพะฑัะตะฝะธะน"("ะะปะฐะดะตะปะตั", "ะขะธะฟะ ะตะตัััะฐ", "ะะฐัะฐะัะตะผั" DESC);
CREATE TABLE "ะฃัะฐััะฝะธะบะขะตะผั"(
"ะขะตะผะฐ"
uuid
, "ะะตััะพะฝะฐ"
uuid
, PRIMARY KEY("ะขะตะผะฐ", "ะะตััะพะฝะฐ")
);
แแแแแแแแ: EN
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