Keydka Messenger (qaybta 1): naqshadaynta qaabka aasaasiga ah

Sida aad ugu turjumi karto shuruudaha ganacsiga qaab dhismeed xog gaar ah adiga oo isticmaalaya tusaale ahaan qaabaynta xogta macluumaadka Messenger ee xoqan.

Keydka Messenger (qaybta 1): naqshadaynta qaabka aasaasiga ah
Saldhigayagu ma noqon doono mid weyn oo loo qaybin doono, sida VKontakte ama Badoo, laakiin "si ay ahayd", laakiin waxa ay ahayd wanaagsan - functional, degdeg ah iyo ku haboon hal server PostgreSQL - si aad u geyso tusaale gaar ah oo adeega meel dhinac ah, tusaale ahaan.

Sidaa darteed, ma taaban doono arrimaha shaandheynta, ku celcelinta iyo nidaamyada juqraafi-qaybsiga, laakiin waxaan diiradda saari doonaa xalalka wareegga gudaha kaydka xogta.

Tallaabada 1: Qaar ka mid ah ganacsiga gaarka ah

U qaabayn mayno fariimahayaga si aan la taaban karin, laakiin waxaan ku dhex dari doonaa deegaanka shabakada bulshada ee shirkadaha. Taasi waa, dadkeenu maaha "kaliya u dhigma," laakiin waxay la xiriiraan midba midka kale marka la eego xalinta dhibaatooyinka ganacsiga qaarkood.

Maxay yihiin hawlaha ganacsigu?.. Aynu eegno tusaale ahaan Vasily, madaxa waaxda horumarinta.

  • "Nikolai, hawshan waxaan maanta ugu baahanahay balastar!"
    Tani waxay ka dhigan tahay in warqadaha la isku diro lagu samayn karo macnaha qaar dokumenti.
  • "Kolya, ma aadaysaa Dota fiidkan?"
    Taasi waa, xitaa hal lamaane oo is dhexgal ah ayaa wada xiriiri kara isku mar mowduucyo kala duwan.
  • "Peter, Nikolay, ka eeg lifaaqa liiska qiimaha server-ka cusub."
    Markaa, hal fariin ayaa yeelan karta dhowr qaata. Xaaladdan oo kale, fariintu waxay ku jiri kartaa Faylasha ku lifaaqan.
  • "Semyon, sidoo kale fiiri."
    Waana in ay jirto fursad lagu geli karo waraaqaha hadda jira martiqaad xubin cusub.

Aan dul istaagno liiskan baahiyaha β€œmuuqda” ee hadda.

Iyadoo aan la fahmin qeexida gaarka ah ee dhibaatada iyo xaddidaadaha la siiyay, naqshadeynta waxtar leh schema database si loo xalliyo waa ku dhawaad ​​wax aan macquul aheyn.

Tallaabada 2: Wareegga macquulka ah ee ugu yar

Ilaa hadda, wax walba waxay u shaqeeyaan si la mid ah waraaqaha emailka - qalab ganacsi oo dhaqameed. Haa, "algorithmically" dhibaatooyin ganacsi oo badan ayaa isku mid ah, sidaas darteed qalabka lagu xalliyo iyaga ayaa qaab ahaan isku mid ah.

Aynu hagaajino jaantuska macquulka ah ee horay loo helay ee cilaaqaadka cidda. Si loo fududeeyo qaabkayaga in la fahmo, waxaan isticmaali doonaa ikhtiyaarka bandhigga ugu horreeya Moodooyinka ER iyada oo aan lahayn dhibaatooyinka UML ama IDEF:

Keydka Messenger (qaybta 1): naqshadaynta qaabka aasaasiga ah

Tusaalahayaga, qofka, dukumeentiga iyo binary "jirka" ee faylka waa hay'ado "dibadeed" oo si madax banaan u jira adeegeena la'aanteed. Sidaa darteed, waxaan si fudud mustaqbalka u arki doonnaa inay yihiin xiriirin "meel" by UUID.

Sawir jaantusyada sida ugu fudud ee suurtogalka ah - Inta badan dadka aad tusi doonto maaha kuwo ku xeel dheer akhrinta UML/IDEF. Laakiin hubi inaad sawirto.

Talaabada 3: Samaynta qaab dhismeedka miiska

Ku saabsan magacyada miiska iyo goobtaMagacyada "Ruushka" ee beeraha iyo miisaska waxaa loola dhaqmi karaa si kala duwan, laakiin tani waa arrin dhadhan. Sababtoo ah halkan Tensor ma jiraan horumariyayaal ajnabi ah, iyo PostgreSQL waxay noo ogolaataa inaan magacyo ku bixinno xitaa hieroglyphs, haddii ay ku lifaaqan xigashooyin, ka dib waxaan doorbideynaa inaan u magacowno walxaha si aan mugdi ku jirin oo cad si aysan u dhicin wax khilaaf ah.
Maadaama ay dad badani fariimaha noogu soo qoraan hal mar, qaarkood ayaa laga yaabaa inay tan sameeyaan offline, markaa ikhtiyaarka ugu fudud ayaa ah isticmaal UUIDs aqoonsi ahaan ma aha oo kaliya hay'adaha dibadda, laakiin sidoo kale dhammaan walxaha ku jira adeeggayaga. Waxaa intaa dheer, iyaga ayaa laga soo saari karaa xitaa dhinaca macmiilka - tani waxay naga caawin doontaa inaan taageerno diritaanka fariimaha marka kaydka xogta aan la heli karin si ku-meel-gaar ah, iyo suurtagalnimada isku dhaca aad u hooseeya.

Qaab dhismeedka miiska qabyada ah ee ku jira xog ururinteena ayaa u ekaan doona sidan:
Shaxda : 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
);

Shaxda: 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
);

Waxa ugu fudud marka la sifaynayo qaab waa in la bilaabo "furid" garaafka xidhiidhka laga soo bilaabo miisaska aan la tixraacin naftooda cidna ma aha.

Tallaabada 4: Soo ogow baahiyaha aan muuqan

Taasi waa sidaas, waxaanu samaynay xog-ururin aad si fiican wax ugu qori karto si uun akhri.

Aynu nafteena gelino kabaha isticmaalaha adeegeena - maxaan rabnaa inaan ku samayno?

  • Farriimihii ugu dambeeyay
    this si taariikhi ah loo kala soocay diiwaanka fariimaha "my" oo ku salaysan shuruudo kala duwan. Halka aan ka mid ahay dadka qaata, meesha aan qoraaga ka ahay, meesha ay wax iigu qoreen oo aanan ka jawaabin, meesha ay iigu jawaabi waayeen,...
  • Ka qaybgalayaasha waraaqaha
    Yaa xataa ka qayb galaya sheekadan dheer ee dheer?

Qaab dhismeedkayagu wuxuu noo ogolaanayaa inaan xallino labadaba dhibaatooyinkan "guud ahaan," laakiin si dhakhso ah uma aha. Dhibaatadu waxay tahay in lagu kala saaro hawsha ugu horeysa awoodin in uu abuuro tusmooyin, ku haboon mid kasta oo ka mid ah ka qaybgalayaasha (oo waa inaad soo saartaa dhammaan diiwaannada), iyo si aad u xalliso midka labaad ee aad u baahan tahay soo saar dhammaan fariimaha mowduucan.

Hawlaha isticmaale ee aan loo baahnayn waxay dhigi karaan geesinimo ka gudub wax soo saarka.

Talaabada 5: Habacsanaanta Wacan

Labadeena dhibaato waxa lagu xalin doonaa shax dheeraad ah oo aan ku xallin doono nuqul ka mid ah xogta, lagama maarmaanka u ah in lagu sameeyo tusmooyinka ku habboon hawlahayaga.
Keydka Messenger (qaybta 1): naqshadaynta qaabka aasaasiga ah

Shaxda : RU

CREATE TABLE "РССстрБообщСний"(
  "Π’Π»Π°Π΄Π΅Π»Π΅Ρ†"
    uuid
, "ВипРССстра"
    smallint
, "ДатаВрСмя"
    timestamp
, "Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅"
    uuid
, PRIMARY KEY("Π’Π»Π°Π΄Π΅Π»Π΅Ρ†", "ВипРССстра", "Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅")
);
CREATE INDEX ON "РССстрБообщСний"("Π’Π»Π°Π΄Π΅Π»Π΅Ρ†", "ВипРССстра", "ДатаВрСмя" DESC);

CREATE TABLE "УчастникВСмы"(
  "Π’Π΅ΠΌΠ°"
    uuid
, "ΠŸΠ΅Ρ€ΡΠΎΠ½Π°"
    uuid
, PRIMARY KEY("Π’Π΅ΠΌΠ°", "ΠŸΠ΅Ρ€ΡΠΎΠ½Π°")
);

Shaxda: 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)
);

Halkan waxaan ku dabaqnay laba hab oo caadi ah oo la isticmaalo marka la abuurayo miisaska caawinta:

  • Isku dhufashada diiwaanada
    Isticmaalka hal diiwaanka fariinta bilowga ah, waxaanu abuurnaa dhawr diiwaan oo dabagal ah oo ku jira noocyada kala duwan ee diiwaanka milkiilayaasha kala duwan - labadaba kuwa soo diray iyo qaatahaba. Laakiin mid kasta oo ka mid ah diiwaannada ayaa hadda ku dhacaya tusmada - ka dib oo dhan, kiis caadi ah, waxaan dooneynaa inaan aragno bogga ugu horreeya.
  • Diiwaanada gaarka ah
    Mar kasta oo aad fariin u dirto mawduuc gaar ah, waxa kugu filan inaad hubiso in galitaankan oo kale uu hore u jiray. Haddii kale, ku dar "qaamuuska".

Qaybta xigta ee maqaalka waxaynu kaga hadli doonaa hirgelinta qaybinta galay qaab-dhismeedka database our.

Source: www.habr.com

Add a comment