Disenyo ng database. Pinakamahusay na kasanayan

Sa pag-asa sa pagsisimula ng susunod na daloy sa rate "Database" Naghanda kami ng maliit na materyal ng may-akda na may mahahalagang tip para sa pagdidisenyo ng database. Inaasahan namin na ang materyal na ito ay magiging kapaki-pakinabang sa iyo.

Disenyo ng database. Pinakamahusay na kasanayan

Ang mga database ay nasa lahat ng dako: mula sa pinakasimpleng mga blog at direktoryo hanggang sa maaasahang mga sistema ng impormasyon at malalaking social network. Kung ang database ay simple o kumplikado ay hindi napakahalaga dahil mahalaga na idisenyo ito nang tama. Kapag ang isang database ay idinisenyo nang walang pag-iisip at walang malinaw na pag-unawa sa layunin, ito ay hindi lamang hindi epektibo, ngunit ang karagdagang trabaho sa database ay magiging isang tunay na pagdurusa, isang hindi malalampasan na kagubatan para sa mga gumagamit. Narito ang ilang mga tip sa disenyo ng database na makakatulong sa iyong lumikha ng isang kapaki-pakinabang at madaling gamitin na produkto.

1. Tukuyin kung para saan ang talahanayan at kung ano ang istraktura nito

Disenyo ng database. Pinakamahusay na kasanayan

Sa ngayon, ang mga paraan ng pag-develop tulad ng Scrum o RAD (Rapid Application Development) ay tumutulong sa mga IT team na mabilis na bumuo ng mga database. Gayunpaman, sa paghahangad ng oras, ang tukso ay napakahusay na sumisid nang diretso sa pagbuo ng isang base, malabo na iniisip kung ano ang layunin mismo, kung ano ang mga huling resulta.
 
Para bang ang koponan ay nakatuon sa mahusay, mabilis na trabaho, ngunit ito ay isang mirage. Kung mas mabilis at mas mabilis kang sumisid sa lalim ng proyekto, mas maraming oras ang aabutin upang matukoy at baguhin ang mga error sa disenyo ng database.

Kaya ang unang bagay na kailangan mong magpasya ay tukuyin ang layunin para sa iyong database. Para sa anong uri ng application ang database na binuo? Ang gumagamit ba ay gagana lamang sa mga talaan at kailangang bigyang pansin ang mga transaksyon, o mas interesado ba siya sa analytics ng data? Saan dapat i-deploy ang base? Susubaybayan ba nito ang pag-uugali ng customer o pamamahalaan lamang ang mga relasyon sa customer? 

Kung mas maagang sinasagot ng pangkat ng disenyo ang mga tanong na ito, magiging mas maayos ang proseso ng disenyo ng database.

2. Anong data ang dapat kong piliin para sa storage?

Disenyo ng database. Pinakamahusay na kasanayan

Magplano nang maaga. Mga saloobin tungkol sa kung ano ang gagawin ng site o system kung saan idinisenyo ang database sa hinaharap. Mahalagang lumampas sa mga simpleng pangangailangan ng mga teknikal na detalye. Mangyaring huwag simulan ang pag-iisip tungkol sa lahat ng posibleng mga uri ng data na maiimbak ng isang user. Sa halip, isipin kung ang mga user ay makakapagsulat ng mga post, makakapag-upload ng mga dokumento o larawan, o makakapagpalitan ng mga mensahe. Kung ito ang kaso, kailangan mong maglaan ng espasyo para sa kanila sa database.

Makipagtulungan sa koponan, departamento, o organisasyon kung saan susuportahan ang base ng disenyo sa hinaharap. Makipag-ugnayan sa mga tao sa iba't ibang antas, mula sa mga espesyalista sa serbisyo sa customer hanggang sa mga pinuno ng departamento. Sa ganitong paraan, sa tulong ng feedback, makakakuha ka ng isang malinaw na ideya ng mga kinakailangan ng kumpanya. 

Hindi maaaring hindi, ang mga pangangailangan ng mga gumagamit sa loob ng kahit na parehong departamento ay magkasalungat. Kung makatagpo ka nito, huwag matakot na umasa sa iyong sariling karanasan at humanap ng kompromiso na nababagay sa lahat ng partido at natutugunan ang panghuling layunin ng database. Makatitiyak: sa hinaharap makakatanggap ka ng +100500 sa karma at isang bundok ng cookies.

3. Mag-modelo ng data nang may pag-iingat

Disenyo ng database. Pinakamahusay na kasanayan

Mayroong ilang mga pangunahing punto na dapat bigyang pansin kapag nagmomodelo ng data. Tulad ng sinabi namin kanina, tinutukoy ng layunin ng database kung aling mga pamamaraan ang gagamitin sa pagmomodelo. Kung kami ay nagdidisenyo ng database para sa online na pagpoproseso ng rekord (OLTP), sa madaling salita para sa paggawa, pag-edit at pagtanggal ng mga tala, gumagamit kami ng pagmomodelo ng transaksyon. Kung ang database ay dapat na may kaugnayan, kung gayon ito ay pinakamahusay na gumamit ng multidimensional na pagmomolde.

Sa panahon ng pagmomodelo, binuo ang mga modelo ng data ng conceptual (CDM), physical (PDM), at logical (LDM). 

Inilalarawan ng mga modelong konsepto ang mga entity at ang mga uri ng data na kanilang kasama, pati na rin ang mga ugnayan sa pagitan nila. Hatiin ang iyong data sa mga lohikal na chunks - ginagawa nitong mas madali ang buhay.
Ang pangunahing bagay ay pag-moderate, huwag lumampas ang luto ito.

Kung ang isang entity ay napakahirap na uriin sa isang salita o parirala, oras na para gumamit ng mga subtype (mga child entity).

Kung ang isang entidad ay namumuno sa sarili nitong buhay, may mga katangian na naglalarawan sa pag-uugali at hitsura nito, pati na rin ang mga relasyon sa iba pang mga bagay, pagkatapos ay maaari mong ligtas na gumamit ng hindi lamang isang subtype, kundi pati na rin isang supertype (parent entity). 

Kung pababayaan mo ang panuntunang ito, malito ang ibang mga developer sa iyong modelo at hindi nila lubos na mauunawaan ang data at ang mga panuntunan kung paano ito kolektahin.

Ang mga modelong konsepto ay ipinatupad gamit ang mga lohikal. Ang mga modelong ito ay parang road map para sa pisikal na disenyo ng database. Sa lohikal na modelo, tinutukoy ang mga entity ng data ng negosyo, tinutukoy ang mga uri ng data, at tinutukoy ang status ng key ng panuntunan na kumokontrol sa mga ugnayan sa pagitan ng data.

Pagkatapos ay ang Logical Data Model ay inihambing sa paunang napiling DBMS (database management system) platform at isang Pisikal na Modelo ay nakuha. Inilalarawan nito kung paano pisikal na iniimbak ang data.

4. Gamitin ang mga tamang uri ng data

Disenyo ng database. Pinakamahusay na kasanayan

Ang paggamit ng maling uri ng data ay maaaring magresulta sa hindi gaanong tumpak na data, kahirapan sa pagsali sa mga talahanayan, kahirapan sa pag-synchronize ng mga katangian, at bloated na laki ng file.
Upang matiyak ang integridad ng impormasyon, ang isang katangian ay dapat na naglalaman lamang ng mga uri ng data na katanggap-tanggap dito. Kung ang edad ay ipinasok sa database, tiyaking ang column ay nag-iimbak ng mga integer ng maximum na 3 digit.

Lumikha ng isang minimum na walang laman na mga column na may NULL na halaga. Kung gagawin mo ang lahat ng mga column bilang NULL, ito ay isang malaking pagkakamali. Kung kailangan mo ng isang walang laman na column upang magsagawa ng isang partikular na function ng negosyo, kapag ang data ay hindi kilala o wala pang kahulugan, pagkatapos ay huwag mag-atubiling gawin ito. Pagkatapos ng lahat, hindi namin maaaring punan ang mga column na "Petsa ng kamatayan" o "Petsa ng pagpapaalis" nang maaga; hindi kami mga predictor na itinuturo ang aming mga daliri sa kalangitan :-).

Karamihan sa software sa pagmomolde (ER/Studio, MySQL Workbench, SQL DBM, gliffy.com) nagbibigay-daan sa iyo ang data na lumikha ng mga prototype ng mga rehiyon ng data. Tinitiyak nito hindi lamang ang tamang uri ng data, lohika ng application, at mahusay na pagganap, ngunit kailangan din ang halaga.

5. Maging natural

Disenyo ng database. Pinakamahusay na kasanayan

Kapag nagpapasya kung aling column sa isang table ang gagamitin bilang key, palaging isaalang-alang kung aling mga field ang maaaring i-edit ng user. Huwag kailanman piliin ang mga ito bilang isang susi - isang masamang ideya. Maaaring mangyari ang anumang bagay, ngunit dapat mong tiyakin na ito ay natatangi.

Pinakamainam na gumamit ng natural, o negosyo, na susi. Ito ay may kahulugang semantiko, kaya maiiwasan mo ang pagdoble sa database. 

Maliban kung ang susi ng negosyo ay natatangi (pangalan, apelyido, posisyon) at nauulit sa iba't ibang row ng talahanayan o dapat itong magbago, ang nabuong artipisyal na key ay dapat na italaga bilang pangunahing key.

6. Normalize sa moderation

Disenyo ng database. Pinakamahusay na kasanayan

Upang epektibong maisaayos ang data sa isang database, kailangan mong sundin ang isang hanay ng mga alituntunin at gawing normal ang database. Mayroong limang normal na anyo na dapat sundin.
Sa normalization, maiiwasan mo ang redundancy at tinitiyak ang integridad ng data na ginamit sa iyong application o site.

Gaya ng nakasanayan, lahat ay dapat nasa moderation, kahit na normalisasyon. Kung mayroong masyadong maraming mga talahanayan sa database na may parehong natatanging mga susi, pagkatapos ay nakuha mo ang layo at over-normalize ang database. Ang labis na normalisasyon ay negatibong nakakaapekto sa pagganap ng database.

7. Mag-test ng maaga, mag-test madalas

Disenyo ng database. Pinakamahusay na kasanayan

Ang plano sa pagsubok at tamang pagsubok ay dapat na bahagi ng disenyo ng database.

Ang pinakamahusay na paraan upang subukan ang iyong database ay sa pamamagitan ng Patuloy na Pagsasama. Gayahin ang isang "araw sa buhay ng isang database" na senaryo at tingnan kung ang lahat ng edge na kaso ay pinangangasiwaan at kung anong mga pakikipag-ugnayan ng user ang malamang. Kung mas maaga kang makakita ng mga bug, mas makakatipid ka ng oras at pera.

Ito ay pitong tip lamang na maaari mong gamitin upang magdisenyo ng isang mahusay na database ng pagiging produktibo at kahusayan. Kung susundin mo ang mga ito, maiiwasan mo ang karamihan sa mga sakit ng ulo sa hinaharap. Ang mga tip na ito ay ang dulo lamang ng malaking bato ng yelo sa pagmomodelo ng database. Mayroong isang malaking bilang ng mga hack sa buhay. Alin ang ginagamit mo?

Pinagmulan: www.habr.com

Magdagdag ng komento