αααααααα’αααα’αΆα αααααααααααΌαααΆαα’αΆααΈααααααα ααΆαα ααΆαααααααααα·ααααααααΆααααΆαααααααααΎα§ααΆα αααααααΆααα ααΆααΌαααααΆααα·ααααααααΆαααΈααααΌαα
- αααααααΈ 1: ααΆααα ααΆααα»αααΌαααααΆα
αααααααΈ 2: ααααα "αααααΆααααααΆααα αααα"
ααΌαααααΆαααααααΎαααΉααα·αααΆαααα ααααα·αα
ααα
αΆα,
ααΌα
ααααα αΎα ααΎαααΉααα·ααααααΆααααααααα αΆααααΆααααα
αα ααΆαα
αααα αα·αααααααααα
ααα
αΆαααΆαααΌαα·ααΆαααααααααα ααα»ααααααΉααααααααΎαααααααααΆαααααααΈαα
ααΆααααα»αααΌαααααΆααα·ααααααα
ααα αΆαααΈ 1: α’αΆααΈαααααααΆααααΆαααα½αα ααα½α
ααΎαααΉααα·ααα
ααΆααΆαααααΎααΆαααααααΎααααα’ααΌααΈαα ααα»ααααααΉααααα
αΌαααΆαα
αααα»αααα·ααααΆα
α αΎαααΎα’αΆααΈαααααααΆαααΆααα·α αα α’αααΈαααα?.. αααααΎαα§ααΆα ααααααα Vasily αααααΆαααααΆαααΆααααααΆαα’αα·ααααααα
- "ααΈααΌα‘α αααααΆαααα·α
αα
ααΆαααα ααΎαααααΌαααΆαααααααααααα!"
αααααΆααααααΆααΆαααααΎαααααα’αΆα ααααΌαααΆαααααΎα‘αΎααα αααα»αααα·αααααα½αα ααα½α α―αααΆα. - "ααΌααΈαααΆ ααΎα’αααααΉααα
Dota ααααΆα
ααααα?"
αααααΊααΌααααΈαα interlocutor αα½αααΌα’αΆα ααααΆαααααααααα»ααααααααΆαααααΆα ααΎαααααΆααααααααα. - "Peter, Nikolay ααααΎααα
αααα»αα―αααΆαααααΆαααααααΆαααααααΈααααααααααΆαααααΆαααΈαααααααΈα"
ααΌα ααααααΆααα½αα’αΆα ααΆα α’αααααα½αααΆα αααΎαα. αααα»αααααΈααα ααΆαα’αΆα ααΆα α―αααΆαβααααΆαα. - βαααααα»α α
αΆαααΎαααβ
α αΎααα½αααααΆαα±ααΆαααΎααααΈα αΌααα αααα»αααΆαααααΎααααααααααΆαααααΆαα α’ααααΎααααΆαα·αααααΈα.
α αΌαααΎαααααα αααα»ααααααΈαααααααΌαααΆα "ααΆααααααα" αααααΆααααααααα
ααααα·ααααααΈααΆαααΆααααΆαααααααΆαα’αα»αααααααααα αΆ αα·ααααααααααααααΆααααααα±ααααΆ ααΆααα ααΆ ααΆαααααα·αααααΆα αααααααΆαααααΌαααααΆααα·ααααααααΎααααΈαααααααΆαααΆααΊααααΎααααα·αα’αΆα αα αα½α ααα
ααα αΆαααΈ 2: ααααααΈαααααα·ααααΆα’αααααααΆ
αα αΌαααααααααααα α’αααΈαααααΎαααΆααααααααα ααΉαααΆαααααΎαααααααΆαα’ααΈααα αααααΆα§αααααα’αΆααΈαααααααααααααααΈα ααΆα / α αΆαα αααα αΆα’αΆααΈαααααααΆα αααΎαααΊααααααααααΆαα ααΉα "αααα½ααααααααΆα" ααΌα ααααα§ααααααααααΆαααααααααΆααα½αααΆααΉαααΆαααααααααααααααααΆα
α
αΌααα½ααα»αααααΆααααΆααααααα·ααααΆαααααα½αααΆααα½α
α αΎαααααααΆααααααα’αααααΆαα ααΎααααΈααααΎα±ααααααΌααααααΎαααΆααααααΆααααα½αααα ααΎαααΉαααααΎαααααΎαααΆααααα αΆαααααΌααααα»αα
αααα»αα§ααΆα αααααααααΎα αα»αααα α―αααΆα αα·α "αα½" αααααΈαααα―αααΆαααΊααΆα’αααααΆα "ααΆααααα
" αααααΆααααα―αααΆααααααααααΆαααααΆααααααααααΎαα ααΌα
αααα ααΎαβααΉαβαααβααΎαβαααΆαβααΆααααβαα
βαααβα’ααΆααβααΆβααΆβαααβαα½αβα
ααα½α βααααααβααΆαα½αβ ααα UUID α
ααΌα ααααΆααααΆαααΆααααααΆααααα’αΆα ααααΎαα ααΆαα - ααα»αααααΆαα αααΎααααα’αααααΉααααα αΆαααΆαα½ααααα·ααααααΆα’αααααααΆααααα»αααΆαα’αΆα UML/IDEF α ααα»ααααααααΌαααααΆααααΆααΌαα
ααα αΆαααΈ 3: ααΌααα ααΆααααααααααΆααΆα
α’αααΈαααααααΆααΆα αα·αααΆαααααα "ααΆααΆαα»ααααΈ" ααααΆα αα·αααΆααΆαα’αΆα
ααααΌαααΆαα
αΆαααα»ααα»αααααΆ ααα»αααααααααΊααΆαααα αΆααααααΆαα·α αααααΆααα
αααααΆαααα»αααααΆα
αααΎααααααααΆαααααΎααααα»αααααααα½α α’αααααααααα’αΆα
ααααΎαααααααααα αααα
αααααΆααααααΆαααααααααΎαααααΆαααααααα»αααΊ ααααΎ UUIDs ααΆα’ααααααααα’ααααααααΆα αα·αααααΉααααααααΆααα’αααααΆαααΆααααα
ααα»ααααααα ααα»αααααααααΆααααααα»ααΆααα’αααα
αααα»αααααΆααααααααααΎααααααα ααΎαααΈααα αα½αααΆα’αΆα
αααααΎαααΆαααΌααααΈαααα
ααΆαα’αα·αα·αα - ααΆααΉααα½αααΎαα±ααααΆααααααΆαααααΎααΆααα
ααααααααΌαααααΆααα·αααααααα·αα’αΆα
ααααΎααΆαααΆααααααα’αΆαααα α αΎαααααααΆαααααΆααααααααα·α
ααααΆααΊααΆααααα»αα
αα
ααΆααααααααααΆααΆαααααΆααα
αααα»αααΌαααααΆααα·ααααααααααααΎαααΉαααΎααα
ααΌα
αααα
ααΆααΆαα 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