Uzihumusha kanjani izimfuneko zebhizinisi zibe izakhiwo zedatha ethile usebenzisa isibonelo sokuklama isizindalwazi sezithunywa kusukela ekuqaleni.
- Ingxenye 1: ukuklama uhlaka oluyisisekelo

Isisekelo sethu ngeke sibe sikhulu futhi sisatshalaliswe, noma , kodwa "ukuze kube", kodwa kwakukuhle - kusebenza, kushesha futhi lingana kuseva eyodwa I-PostgreSQL - ukuze ukwazi ukusebenzisa isibonelo esihlukile senkonzo endaweni ethile eceleni, isibonelo.
Ngakho-ke, ngeke sithinte ezindabeni zokwabiwa, ukuphindaphinda kanye nezinhlelo ezisabalaliswa nge-geo, kodwa sizogxila ezixazululweni zeskimu ngaphakathi kwesizindalwazi.
Isinyathelo 1: Imininingwane yebhizinisi elincane
Ngeke sidizayine imilayezo yethu ngendlela engabonakali, kodwa sizoyihlanganisa nemvelo. Okungukuthi, abantu bakithi abagcini nje “ukuthumelana imiyalezo,” kodwa baxhumana bodwa esimweni sokuxazulula izinkinga ezithile zebhizinisi.
Hlobo luni lwemisebenzi ibhizinisi elibhekene nayo? Ake sibheke isibonelo sikaVasily, inhloko yomnyango wentuthuko.
- "Nikolai, le nkinga idinga isichibi namuhla!"
Lokhu kusho ukuthi ukuxhumana kungenziwa ngokwengqikithi yabathile idokhumenti. - "Kolya, uya e-Dota namhlanje kusihlwa?"
Lokhu kusho ukuthi ngisho nepheya elilodwa labaxhumanisi lingaxhumana kanyekanye. ngezihloko ezihlukahlukene. - "Peter, Nikolai, bheka okunamathiselwe kwi-imeyili kohlu lwamanani eseva entsha."
Ngakho, umlayezo owodwa ungaba amakheli amaningi. Umlayezo ungaqukatha amafayela anamathiselwe. - "Semyon, nawe ake ubheke."
Futhi kufanele kube nenketho yokwengeza ezincwadini ezikhona. mema ilungu elisha.
Ake sime okwamanje kulolu hlu lwezidingo "ezisobala".
Ngaphandle kokuqonda imininingwane ebekiwe yomsebenzi kanye nezingqinamba ozibekayo, kunzima ukuklama ngempumelelo Cishe akunakwenzeka ukuxazulula uhlelo lwesizindalwazi.
Isinyathelo sesi-2: Isekhethi Enengqondo Encane
Kuze kube manje, uhlelo lubukeka lufana kakhulu nezincwadi ze-imeyili—ithuluzi lebhizinisi elivamile. Ngempela, imisebenzi eminingi yebhizinisi iyafana ngokwe-algorithm, ngakho-ke amathuluzi wokuyixazulula azofana ngokwesakhiwo.
Ake sithwebule umphumela womdwebo onengqondo wobudlelwano bebhizinisi. Ukuze kube lula ukuqonda, sizosebenzisa ukumelwa kwakudala kakhulu. ngaphandle kwezinkinga ze-UML noma i-IDEF yamanothi:

Esibonelweni sethu, umuntu, idokhumenti, "nomzimba" wefayela kanambambili kuyizinhlangano "zangaphandle" ezikhona ngokuzimela ngaphandle kwesevisi yethu. Ngakho-ke, sizovele sibaphathe njengezinkomba "zasendaweni ethile" nge-UUID.
Dweba izikimu njengoba elula ngangokunokwenzeka — Abantu abaningi ozobabonisa bona ababona ongoti ekufundeni i-UML/IDEF. Kodwa - qiniseka ukudweba.
Isinyathelo sesi-3: Dweba isakhiwo setafula
Mayelana namathebula namagama enkundlaAmagama "isiRashiya" amasimu namatafula angaphathwa ngendlela ehlukile, kodwa lokhu kuyindaba yokunambitha. Ngoba i abekho abathuthukisi bangaphandle, futhi i-PostgreSQL isivumela ukuthi sinikeze amagama ngisho nakuma-hieroglyphs, uma kunjalo kufakwe izingcaphuno, bese sikhetha ukuqamba izinto ngokusobala nangokucacile ukuze kungabikho ukungezwani.
Njengoba sinabantu abaningi ababhala imiyalezo ngesikhathi esisodwa, abanye babo bangakwenza lokhu kumodi engaxhunyiwe ku-inthanethi, ke inketho elula kakhulu sebenzisa ama-UUID njengezihlonzi Hhayi okwezinkampani zangaphandle kuphela, kodwa kuzo zonke izinto ezingaphakathi kwenkonzo yethu. Ngaphezu kwalokho, zingakhiqizwa nakuhlangothi lweklayenti—lokhu kuzosisiza ukuthi sigcine ukuthunyelwa komlayezo ngesikhathi sokungatholakali kwesizindalwazi sesikhathi esifushane, futhi amathuba okushayisana aphansi kakhulu.
Ukwakheka kwamathebula kusizindalwazi sethu kuzobukeka kanje:
Amathebula: 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
);Amathebula: 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
);Indlela elula yokuchaza ifomethi ukuqala "ukuqaqa" igrafu yokuxhumana kusukela kumathebula okungabaluliwe thina kumuntu.
Isinyathelo sesi-4: Thola izidingo ezingabonakali
Yilokho kuphela, siklame isizindalwazi ongabhalela kuso futhi ngandlela-thile funda.
Masizibeke ezicathulweni zabasebenzisi bensizakalo yethu—singathanda ukwenzani ngakho?
- Imilayezo yokugcina
Yilokho kuhlungwe ngokulandelana kwesikhathi Irejista yemilayezo "yami" esekelwe kumibandela ehlukahlukene. Lapho ngingomunye wabamukeli, lapho ngingumbhali khona, lapho ngithintwa khona kodwa ngangaphendula, lapho ngingaphendulwanga, ... - Abahlanganyeli bezincwadi
Ubani obamba iqhaza kule ngxoxo ende, ende?
Isakhiwo sethu sisivumela ukuthi sixazulule zombili lezi zinkinga "ngokujwayelekile," kodwa hhayi ngokushesha. Inkinga ukuthi ukuhlunga ngaphakathi kwenkinga yokuqala ayikwazi ukudala inkomba, elungele ngamunye wabahlanganyeli (futhi wonke amarekhodi kuzodingeka akhishwe), futhi ukuxazulula elesibili kuyadingeka khipha yonke imilayezo ngesihloko.
Imisebenzi engahlosiwe yomsebenzisi ingaba inselele enkulu. ukuwela ekukhiqizeni.
Isinyathelo sesi-5: I-Smart Denormalization
Zombili izinkinga zethu zizoxazululwa ngamathebula engeziwe, esizowenza phinda ingxenye yedatha, okudingekayo ekwakhiweni kwezinkomba kuzo ezifanele imisebenzi yethu.

Amathebula: RU
CREATE TABLE "РеестрСообщений"(
"Владелец"
uuid
, "ТипРеестра"
smallint
, "ДатаВремя"
timestamp
, "Сообщение"
uuid
, PRIMARY KEY("Владелец", "ТипРеестра", "Сообщение")
);
CREATE INDEX ON "РеестрСообщений"("Владелец", "ТипРеестра", "ДатаВремя" DESC);
CREATE TABLE "УчастникТемы"(
"Тема"
uuid
, "Персона"
uuid
, PRIMARY KEY("Тема", "Персона")
);Amathebula: 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)
);Lapha sisebenzise izindlela ezimbili ezijwayelekile ezisetshenziswa lapho kwakhiwa amatafula asizayo:
- Ukuphindaphindeka kwamarekhodi
Senza amarekhodi okulandelela amaningi erekhodi ngalinye lomlayezo wokuqala ezinhlotsheni ezihlukene zokubhaliswa kwabanikazi abahlukene—kokubili umthumeli nomamukeli. Kodwa-ke, indawo yokubhalisa ngayinye isihlala kunkomba, njengoba esimweni esijwayelekile, sizofuna kuphela ukubona ikhasi lokuqala. - Ukuhluka kwamarekhodi
Ngaso sonke isikhathi uma uthumela umlayezo phakathi kwesihloko esithile, udinga nje ukuhlola ukuthi okufakiwe sekuvele kukhona yini. Uma kungenjalo, uyengeza "kusichazamazwi sakho."
Engxenyeni elandelayo yesihloko sizokhuluma ngayo esakhiweni sesizindalwazi sethu.
Source: www.habr.com
