የሜሴንጀር ዳታቤዝ ከባዶ የመንደፍ ምሳሌ በመጠቀም የንግድ መስፈርቶችን ወደ ተወሰኑ የውሂብ መዋቅሮች እንዴት መተርጎም እንደሚችሉ።
- ክፍል 1: የመሠረት ፍሬም ንድፍ
ክፍል 2፡ ክፍል "ትርፍ"
የእኛ መሠረት ትልቅ እና የተከፋፈለ አይሆንም ፣
ስለዚህ፣ የሻርዲንግ፣ የማባዛት እና የጂኦ-ስርጭት ስርዓቶች ጉዳዮችን አንነካም፣ ነገር ግን በመረጃ ቋቱ ውስጥ ባሉ የወረዳ መፍትሄዎች ላይ እናተኩራለን።
ደረጃ 1፡ አንዳንድ የንግድ ዝርዝሮች
የኛን መልእክት ረቂቅ በሆነ መልኩ አንቀርፀውም፣ ነገር ግን ከአካባቢው ጋር እናዋህዳለን።
እና የንግድ ሥራ ተግባራት ምንድ ናቸው?... የልማት ክፍል ኃላፊ የሆነውን ቫሲሊን ምሳሌ እንመልከት።
- "ኒኮላይ፣ ለዚህ ተግባር ዛሬ መታጠፍ እንፈልጋለን!"
ይህ ማለት የደብዳቤ ልውውጥ በአንዳንዶች ሁኔታ ውስጥ ሊከናወን ይችላል ሰነድ. - “ኮሊያ፣ ዛሬ ምሽት ወደ ዶታ ትሄዳለህ?”
ማለትም አንድ ጥንድ ኢንተርሎኩተሮች እንኳን በአንድ ጊዜ መገናኘት ይችላሉ። በተለያዩ ርዕሰ ጉዳዮች ላይ. - "ጴጥሮስ፣ ኒኮላይ፣ ለአዲሱ አገልጋይ የዋጋ ዝርዝሩን በአባሪው ውስጥ ይመልከቱ።"
ስለዚህ, አንድ መልእክት ሊኖረው ይችላል በርካታ ተቀባዮች. በዚህ አጋጣሚ መልእክቱ ሊይዝ ይችላል። የተያያዙ ፋይሎች. - “ሴሚዮን፣ አንተም ተመልከት።
እና ወደ ነባር ደብዳቤዎች ለመግባት እድሉ ሊኖር ይገባል አዲስ አባል ይጋብዙ.
አሁን በዚህ “ግልጽ” ፍላጎቶች ዝርዝር ላይ እንቆይ።
የችግሩን የተተገበሩ ልዩ ሁኔታዎች እና ለእሱ የተሰጡትን ገደቦች ሳይረዱ, ዲዛይን ውጤታማ የውሂብ ጎታ ንድፍ ለመፍታት ፈጽሞ የማይቻል ነው.
ደረጃ 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)
);
ረዳት ሰንጠረዦችን ሲፈጥሩ ጥቅም ላይ የዋሉ ሁለት የተለመዱ አቀራረቦችን እዚህ ተግብረናል፡
- መዝገቦችን ማባዛት
አንድ የመጀመሪያ የመልእክት መዝገብ በመጠቀም ፣ለተለያዩ ባለቤቶች በተለያዩ የመመዝገቢያ ዓይነቶች ውስጥ በርካታ የክትትል መዝገቦችን እንፈጥራለን - ለላኪውም ሆነ ለተቀባዩ። ግን እያንዳንዱ መዝገቦች አሁን በመረጃ ጠቋሚው ላይ ይወድቃሉ - ከሁሉም በኋላ ፣ በተለመደው ሁኔታ ፣ የመጀመሪያውን ገጽ ብቻ ማየት እንፈልጋለን። - ልዩ መዝገቦች
በአንድ የተወሰነ ርዕስ ውስጥ መልእክት በላኩ ቁጥር ፣ እንደዚህ ያለ ግቤት ቀድሞውኑ መኖሩን ማረጋገጥ በቂ ነው። ካልሆነ ወደ “መዝገበ-ቃላታችን” ያክሉት።
በሚቀጥለው የጽሁፉ ክፍል እንነጋገራለን
ምንጭ: hab.com