Strukturování dat pomocí JavaScriptu: Co je to datová struktura? Koncept strukturovaných dat. Definice a účel databáze

  • Překlad

Samozřejmě můžete být úspěšným programátorem i bez posvátných znalostí datových struktur, ale ty jsou v některých aplikacích naprosto nepostradatelné. Například když potřebujete vypočítat nejkratší cestu mezi dvěma body na mapě nebo najít jméno v telefonním seznamu obsahujícím řekněme milion položek. Nemluvě o tom, že datové struktury se ve sportovním programování používají neustále. Podívejme se na některé z nich podrobněji.

Fronta

Tak pozdravuj Loopy!

Loopy rád hraje hokej se svou rodinou. A slovem „hra“ myslím:

Když želvy vletí do brány, jsou vrženy na vrchol hromádky. Všimněte si, že první želva přidaná do hromádky je první, která ji opustí. Říká se tomu Fronta. Stejně jako ve frontách, které vidíme v každodenním životě, první prvek přidaný do seznamu je první, kdo jej opouští. Tato struktura se také nazývá FIFO(První dovnitř, první ven).

Co operace vkládání a mazání?

Q = def insert(elem): q.append(elem) #přidání prvku na konec fronty print q def delete(): q.pop(0) #odstranění nulového prvku z fronty print q

Stoh

Po tak zábavném hokeji dělá Loopy palačinky pro každého. Dá je na jednu hromadu.

Když jsou všechny palačinky hotové, Loopy je jednu po druhé naservíruje celé rodině.

Všimněte si, že první palačinka, kterou udělá, bude podávána jako poslední. Říká se tomu Stoh. Poslední prvek přidaný do seznamu bude první, kdo jej opustí. Tato datová struktura se také nazývá LIFO(Last In First Out).

Přidávání a odebírání prvků?

S = def push(elem): #Přidat prvek do zásobníku - Push s.append(elem) print s def customPop(): #Odebrat prvek ze zásobníku - Pop s.pop(len(s)-1) tisknout s

Halda

Už jste někdy viděli hustotní věž?

Všechny prvky shora dolů jsou umístěny na svých místech podle jejich hustoty. Co se stane, když dovnitř hodíte nový předmět?

Bude zabírat místo v závislosti na jeho hustotě.

Funguje to zhruba takto Halda.

Halda je binární strom. To znamená, že každý rodičovský prvek má dva potomky. A přestože této datové struktuře říkáme halda, je vyjádřena prostřednictvím pravidelného pole.
Také halda má vždy výšku logn, kde n je počet prvků

Obrázek ukazuje maximální hromadu založenou na následujícím pravidle: děti méně rodičovský. Existují také min-hromady, kde jsou děti vždy více rodičovský.

Několik jednoduchých funkcí pro práci s haldami:

Globální halda globální velikost currSize def parent(i): #Získat index rodiče pro i-tý prvek return i/2 def left(i): #Získat levý potomek i-tého prvku return 2*i def right (i): #Get right child of i-th return (2*i + 1)

Přidání prvku do existující haldy
Pro začátek přidáme prvek na samé dno haldy, tzn. na konec pole. Poté jej prohodíme s jeho nadřazeným prvkem, dokud nezapadne na místo.

Algoritmus:

  1. Přidejte prvek na úplný konec hromady.
  2. Porovnejte přidaný prvek s nadřazeným prvkem; Pokud je objednávka správná, zastavíme.
  3. Pokud ne, vyměňte prvky a vraťte se k předchozímu bodu.
Kód:

Def swap(a, b): #zaměnit prvek s indexem a za prvek s indexem b temp = heap[a] heap[a] = heap[b] heap[b] = temp def insert(elem): global currSize index = len(heap) heap.append(elem) currSize += 1 par = nadřazený (index) příznak = 0, zatímco příznak != 1: if index == 1: #Dosáhli jsme kořenového prvku flag = 1 halda elif > elem : #Pokud je index kořenového prvku větší než index našeho prvku - náš prvek je na jeho místě příznak = 1 else: #Prohoďte nadřazený prvek s naším swap(par, index) index = par par = parent(index ) hromada tisku
Maximální počet průchodů smyčkou while se rovná výšce stromu neboli logn, proto je složitost algoritmu O(logn).

Načítání maximálního prvku haldy
První prvek v hromadě je vždy maximum, takže jej jednoduše odstraníme (po zapamatování) a nahradíme nejnižším. Hromadu pak položíme ve správném pořadí pomocí funkce:

MaxHeapify().

Algoritmus:

  1. Nahraďte kořenový prvek spodním prvkem.
  2. Porovnejte nový kořenový prvek s jeho potomky. Pokud jsou ve správném pořadí, zastavte se.
  3. Pokud ne, nahraďte kořenový prvek jedním z potomků (menší pro min-heap, větší pro max-heap) a opakujte krok 2.

Def extractMax(): global currSize if currSize != 0: maxElem = halda halda = halda #Nahraďte kořenový prvek posledním heap.pop(currSize) #Odeberte poslední element currSize -= 1 #Zmenšete velikost haldy maxHeapify( 1) return maxElem def maxHeapify(index): global currSize lar = index l = left(index) r = right(index) #Vypočítejte, který podřízený prvek je větší; pokud je větší než mateřská, vyměňte si místa, pokud l<= currSize and heap[l] >hromada: lar = l jestliže r<= currSize and heap[r] >halda: lar = r if lar != index: swap(index, lar) maxHeapify(lar)
Opět platí, že maximální počet volání funkce maxHeapify se rovná výšce stromu neboli logn, což znamená, že složitost algoritmu je O(logn).

Vytvoříme hromadu z libovolného náhodného pole
Dobře, existují dva způsoby, jak to udělat. První je vložit každý prvek do haldy jeden po druhém. Je to jednoduché, ale naprosto neúčinné. Složitost algoritmu v tomto případě bude O(nlogn), protože funkce O(logn) se provede nkrát.

Efektivnějším způsobem je použití funkce maxHeapify pro „ dílčí hromady', od (currSize/2) po první prvek.

Složitost bude O(n) a důkaz tohoto tvrzení bohužel přesahuje rámec tohoto článku. Jen pochopte, že prvky v části hromady currSize/2 až currSize nemají žádné potomky a většina takto vytvořených „dílčích hromad“ bude mít výšku menší než logn.

Def buildHeap(): global currSize for i v rozsahu(currSize/2, 0, -1): #třetí argument v range() je krok hledání, v tomto případě určuje směr.

print heap maxHeapify(i) currSize = len(heap)-1

Opravdu, proč to všechno? Hromady jsou potřeba k implementaci speciálního typu třídění, který se kupodivu nazývá „ třídit haldy

" Na rozdíl od méně efektivních „třídění vkládáním“ a „bublinového třídění“ s jejich hroznou složitostí O(n2) má „třídění haldy“ složitost O(nlogn).

Implementace je neslušně jednoduchá. Stačí postupně vytahovat maximální (kořenový) prvek z haldy a zapisovat jej do pole, dokud nebude halda prázdná.
Def heapSort(): for i in range(1, len(heap)): print heap heap.insert(len(heap)-i, extractMax()) #insert the maxim element on the field currSize = len( hromada)-1

Abych vše shrnul, napsal jsem pár řádků kódu obsahujících funkce pro práci s haldou a pro fanoušky OOP jsem vše naformátoval jako třídu.

Snadné, že? Přichází slavící Loopy!

hash

Po chvíli byly želvy úplně zmatené

Vytáhla tedy další hračku, aby si proces trochu usnadnila.

Bylo to mnohem jednodušší, protože želvy už věděly, že figurky jsou seřazeny podle tvaru. Co kdybychom označili každý sloup?

Želvy nyní potřebují zkontrolovat sloup s určitým číslem a vybrat ten správný z mnohem menšího počtu figurek. Co když máme také samostatný sloup pro každou kombinaci tvaru a barvy?

Řekněme, že číslo sloupce se vypočítá takto:

Celé jméno letní tre náměstí
f+i+o+t+r+e = 22+10+16+20+18+6 = sloupec 92

Kra ospalý rovně trojúhelník
k+p+a+p+p+i = 12+18+1+17+18+33 = sloupec 99

Víme, že 6*33 = 198 možných kombinací, což znamená, že potřebujeme 198 pilířů.

Nazvěme tento vzorec pro výpočet čísla sloupce - Hashovací funkce.

Kód:
def hashFunc(piece): words = piece.split(" ") #rozdělení řetězce na slova barva = slova tvar = slova poleNum = 0 pro i v rozsahu(0, 3): poleNum += ord(barva[i]) - 96 poleNum += ord(tvar[i]) - 96 návrat poleNum
(s azbukou je to trochu složitější, ale pro jednoduchost jsem to tak nechal. - cca.)

Nyní, pokud bychom chtěli vědět, kde je uložen růžový čtverec, mohli bychom vypočítat:
hashFunc("růžový čtverec")

Toto je příklad hashovací tabulky, kde je umístění prvků určeno hashovací funkcí.
Při tomto přístupu není čas strávený hledáním libovolného prvku závislý na počtu prvků, tzn. O(1). Jinými slovy, doba vyhledávání v hashovací tabulce je konstantní hodnota.

Dobře, ale řekněme, že hledáme „ auto amel rovně trojúhelník“ (pokud samozřejmě barva „karamelová“ existuje).

HashFunc("karamelový obdélník")
vrátí nám 99, což je stejné číslo pro červený obdélník. Jmenuje se " Kolize" K vyřešení kolize používáme „ Řetězová metoda“, což znamená, že každý sloupec ukládá seznam, ve kterém hledáme záznam, který potřebujeme.

Takže jen položíme obdélník cukroví na červený a vybereme jeden, když hashovací funkce ukazuje na tento sloup.

Klíčem k dobré hashovací tabulce je výběr vhodné hashovací funkce. To je při vytváření hašovací tabulky ta nejdůležitější věc a lidé tráví obrovské množství času vývojem kvalitních hašovacích funkcí.
V dobrých tabulkách žádná pozice neobsahuje více než 2–3 prvky, jinak hašování nefunguje dobře a je třeba změnit hašovací funkci.

Opět hledejte nezávisle na počtu prvků! Hashovací tabulky můžeme použít pro cokoli, co má obrovskou velikost.

Hash tabulky se také používají k nalezení řetězců a podřetězců ve velkých kouscích textu pomocí algoritmu Rabin-Karp nebo algoritmus Knuth-Morris-Pratt, což je užitečné například pro identifikaci plagiátů ve vědeckých pracích.

Myslím, že tady můžeme skončit. Do budoucna plánuji poohlédnout se po složitějších datových strukturách, např. Fibonacciho hromada A Segmentový strom. Doufám, že pro vás byl tento neformální průvodce zajímavý a užitečný.

Přeloženo pro Habr uzamčeno

Databanka je forma organizace ukládání a přístupu k informacím a je to systém speciálně organizovaných datových, softwarových, technických, jazykových, organizačních a metodických nástrojů, které jsou určeny k zajištění centralizovaného shromažďování a hromadného víceúčelového využití dat.

Databanka musí splňovat následující požadavky:

  • * uspokojit informační potřeby externích uživatelů, poskytnout možnost ukládat a měnit velké objemy různých informací;
  • * splňovat stanovenou úroveň spolehlivosti uložených informací a jejich konzistenci;
  • * přístup k údajům pouze uživatelům s příslušným oprávněním;
  • * umožňují vyhledávat informace podle libovolné skupiny charakteristik;
  • * splnit nezbytné požadavky na výkon při zpracování požadavků;
  • * být schopen reorganizace a rozšíření, když se změní hranice softwaru;
  • * poskytovat uživatelům informace v různých formách;
  • * zaručit jednoduchost a pohodlí pro přístup k informacím pro externí uživatele;
  • * poskytují možnost současně obsluhovat velký počet externích uživatelů.

Databanka se skládá ze dvou hlavních součástí: databáze a systému správy databází.

Jádrem databanky je databáze, což je soubor vzájemně souvisejících dat uložených společně s minimální redundancí tak, aby je bylo možné optimálně využít pro jednu nebo více aplikací. V tomto případě jsou data uložena tak, že jsou nezávislá na programech, které je používají; K přidávání nových dat nebo transformaci existujících dat ak vyhledávání dat v databázi se používá běžná spravovaná metoda.

Na organizaci databází se vztahují následující požadavky:

  • 1) snadný, rychlý a levný vývoj databázových aplikací;
  • 2) možnost opakovaného použití údajů;
  • 3) zachování nákladů na duševní práci, vyjádřené existencí programu a logických datových struktur, které se nemění při provádění změn v databázi;
  • 4) jednoduchost;
  • 5) snadné použití;
  • 6) flexibilita použití;
  • 7) vysoká rychlost zpracování neplánovaných požadavků na data;
  • 8) snadnost provádění změn;
  • 9) nízké náklady; nízké náklady na ukládání a používání dat a minimalizace nákladů na provádění změn;
  • 10) nízká redundance dat;
  • 11) produktivita;
  • 12) spolehlivost dat a soulad se stejnou úrovní aktualizace; je nutné uplatňovat kontrolu nad spolehlivostí údajů; systém zabraňuje různým verzím stejných datových prvků dostupných uživatelům v různých fázích aktualizace;
  • 13) utajení; neoprávněný přístup k datům je nemožný; omezení přístupu ke stejným údajům pro různé typy použití lze provést různými způsoby;
  • 14) ochrana před zkreslením a zničením; data musí být chráněna před selháním;
  • 15) připravenost; uživatel rychle obdrží data, kdykoli je potřebuje.

Do procesu vytváření a provozu databanky jsou zapojeni uživatelé různých kategorií, přičemž hlavní kategorií jsou koncoví uživatelé, tedy ti, pro jejichž potřeby se databanka vytváří.

Podle typu ukládaných informací se databáze dělí na

  • · dokumentární,
  • · faktické a
  • · lexikografický.

Mezi dokumentární databáze se dělí na bibliografické, abstraktní a plnotextové.

NA lexikografický databáze zahrnují různé slovníky (klasifikátory, vícejazyčné slovníky, slovníky základních slov atd.).

V systémech faktické typu, databáze uchovává informace o objektech předmětné oblasti, které jsou pro uživatele zajímavé, ve formě „faktů“ (například biografické informace o zaměstnancích, údaje o uvolnění produktů výrobci atd.); v reakci na žádost uživatele jsou požadované informace o objektu (objektech), které ho zajímají, nebo je podána zpráva, že požadovaná informace není v databázi.

V dokumentárníÚložiště DB je dokument (například text zákona nebo článku) a uživateli je na jeho žádost poskytnut buď odkaz na dokument, nebo na dokument samotný, ve kterém nalezne informace. má zájem.

DB dokumentární typy lze organizovat různými způsoby: bez uložení a s uložením samotného originálního dokumentu na počítačové médium. Systémy prvního typu zahrnují bibliografické a abstraktní databáze a také rejstříkové databáze, které odkazují na zdroj informací. Systémy, které poskytují úložiště plného textu dokumentu, se nazývají fulltextové.

V systémech dokumentární typu, mohou být účelem vyhledávání nejen některé informace uložené v dokumentech, ale i dokumenty samotné. Jsou tedy možné dotazy typu „kolik dokumentů bylo vytvořeno za určitou dobu“ atd. Mezi vyhledávací kritéria často patří „datum přijetí dokumentu“, „kdo přijal“ a další „výstupní data“ dokumentů jako funkce.

Specifickým typem databáze je databáze formulářů dokumentů. Mají některé rysy dokumentárních systémů (hledá se dokument, nikoli informace o konkrétním objektu; forma dokumentu má název, který se obvykle používá k jeho vyhledávání), a specifické vlastnosti (hledá se dokument, nikoli za účelem získávání informací z něj, ale za účelem jeho použití jako šablony).

V posledních letech se aktivně rozvíjí objektově orientovaný přístup k tvorbě informačních systémů. Objektové databáze jsou organizovány jako objekty a odkazy na objekty. Objekt představuje data a pravidla, podle kterých se s těmito daty provádějí operace. Objekt obsahuje metodu, která je součástí definice objektu a je uložena s objektem. V objektových databázích jsou data uložena jako objekty klasifikované do typů tříd a organizované do hierarchické rodiny tříd. Třída je kolekce objektů se stejnými vlastnostmi. Objekty patří do třídy. Třídy jsou organizovány v hierarchii.

Na základě charakteru organizace ukládání dat a přístupu k nim se rozlišují

  • · místní (osobní),
  • obecné (integrované, centralizované) a
  • distribuované databáze

Osobní databáze - je to databáze určená pro lokální použití jedním uživatelem. Lokální databáze může vytvářet každý uživatel samostatně, nebo je lze získat ze společné databáze.

Integrované a distribuované Databáze implikují možnost současného přístupu několika uživatelů ke stejným informacím (multi-user, paralelní přístup). To přináší specifické problémy při jejich návrhu a při provozu BnD. Distribuováno Databáze mají navíc charakteristické rysy související s tím, že fyzicky různé části databáze mohou být umístěny na různých počítačích, ale logicky musí z pohledu uživatele představovat jeden celek.

Databáze jsou klasifikovány podle objem. Zvláštní místo zde zaujímají tzv. velmi rozsáhlé databáze. Je to dáno tím, že u velkých databází jsou otázky zajištění efektivity ukládání informací a zajištění jejich zpracování položeny odlišně.

Podle povaha organizace dat Databáze lze rozdělit na

  • · nestrukturovaný,
  • · částečně strukturované a
  • · strukturované.

Tato klasifikační charakteristika se týká informací prezentovaných v symbolické formě. Nestrukturované databáze mohou zahrnovat databáze organizované ve formě sémantických sítí. Databáze prostého textu nebo hypertextové systémy lze považovat za částečně strukturované. Strukturované databáze vyžadují předběžný návrh a popis struktury databáze. Teprve poté lze databáze tohoto typu naplnit daty.

Strukturované databáze zase typ použitého modelu se dělí na

  • · hierarchický,
  • · síť,
  • · vztahový,
  • · smíšené a
  • · vícemodelové.

Klasifikace podle typu modelu platí nejen pro databáze, ale také pro DBMS.

Hierarchické, síťové, relační

V hierarchickém modelu lze vztahy mezi daty popsat pomocí uspořádaného grafu (nebo stromu). Zjednodušené znázornění vztahů mezi daty v hierarchickém modelu je na obrázku.

Pro popis struktury (schéma) hierarchické databáze v určitém programovacím jazyce se používá stromová struktura, jejíž uzly obsahují objekty s datovým typem „node“. Objekt uzlu je podobný strukturním datovým typům programovacího jazyka C a datovým typům záznamů programovacího jazyka Pascal. Umožňují vnořování typů, z nichž každý je na určité úrovni. Typ uzlu je složený. Zahrnuje odkazy na podobjekty („podstromy“), z nichž každý je zase typu „uzlu“ s jinými vnořenými objekty. Každý "strom" se skládá z jednoho "kořenového" objektu (uzlu) a uspořádané sady (případně prázdných) podřízených uzlů. Každý z elementárních uzlů obsažených ve „stromu“ nese jednoduchou nebo složenou informaci obsaženou v objektu, který je k němu připojen. Jednoduchý „uzel“ nese v síti objekt jednoho typu, například číselný, a složený objekt kombinuje určitou sadu typů, například celé číslo, řetězec znaků a ukazatel (odkaz). Příklad „stromu“ jako kolekce uzlů je znázorněn na obrázku.

Kořenový uzel je uzel, který má podřízené uzly a sám není poduzlem. Podřízený uzel (subnode) je potomkem uzlu, který funguje jako jeho předek (rodič). Potomci stejného uzlu jsou navzájem dvojčata Obecně platí, že „strom“ je hierarchicky organizovaná množina typů „uzlů“. Hierarchická databáze je uspořádaná kolekce stromů obsahující instance typu uzlu (záznamy). Často jsou vztahy mezi typy rozšířeny na vztahy mezi samotnými záznamy. Záznamová pole ukládají skutečné číselné nebo symbolické hodnoty, které tvoří hlavní obsah databáze. Procházení všech prvků hierarchické databáze se obvykle provádí shora dolů a zleva doprava.

Síťový datový model umožňuje zobrazit různé vztahy datových prvků ve formě libovolného grafu, čímž zobecňuje hierarchický datový model.

K popisu schématu síťové databáze se používají dvě skupiny typů: „záznam“ a „komunikace“. Typ "vztah" je definován pro dva typy "záznam": předek a potomek Proměnné typu "vztah" jsou instancemi vztahů.

Síťová databáze se skládá ze sady záznamů a sady odpovídajících vztahů. Na vytvoření spojení nejsou kladena žádná zvláštní omezení. Pokud by v hierarchických strukturách mohl mít záznam potomka pouze jeden záznam předka, pak v síťovém datovém modelu může mít záznam potomka libovolný počet záznamů předků (nevlastních rodičů). Příklad jednoduchého schématu síťové databáze je na obrázku. Význam spojení je zde naznačen nápisy na řádcích spojujících typy záznamů. Různé DBMS typu sítě často používají různé termíny k označení v podstatě identických konceptů. Například datové prvky a agregáty, záznamy, soubory, oblasti atd. Fyzické umístění dat v databázích síťového typu lze organizovat pomocí téměř stejných metod jako v hierarchických databázích.

Relační datový model navrhl zaměstnanec IBM Udgar Codd a je založen na konceptu vztahu.

Relace je množina prvků nazývaných n-tice. Vizuální forma reprezentace vztahu je dvourozměrná tabulka známá lidskému vnímání.

Tabulka má řádky (záznamy) a sloupce (sloupce). Každý řádek tabulky má stejnou strukturu a skládá se z polí. Řádky tabulky odpovídají n-ticím a sloupce odpovídají relačním atributům.

Pomocí jedné tabulky je vhodné popsat nejjednodušší typ vztahů mezi daty, a to rozdělení jednoho objektu (jevu, entity, systému atd.), o kterém jsou v tabulce uloženy informace, na mnoho podobjektů, z nichž každý odpovídá záznamu řádku nebo tabulky. Každý z podobjektů má navíc stejnou strukturu nebo vlastnosti popsané odpovídajícími hodnotami polí záznamu. Tabulka může například obsahovat informace o skupině studentů, o každém z nich jsou známy následující charakteristiky: příjmení, jméno a příjmení, pohlaví, věk a vzdělání. Protože v rámci jedné tabulky není možné popsat složitější logické datové struktury z předmětné oblasti, používá se propojování tabulek.

Fyzické umístění dat v relačních databázích na externí média lze snadno provést pomocí běžných souborů.

  • Překlad

Ekaterina Malakhova, redaktorka na volné noze, upravila článek Beau Carnese o hlavních typech datových struktur speciálně pro blog Netology.

„Špatní programátoři přemýšlejí o kódu. Dobří programátoři přemýšlejí o datových strukturách a jejich vztazích." - Linus Torvalds, tvůrce Linuxu.

Datové struktury hrají důležitou roli v procesu vývoje softwaru a jsou také často kladenými otázkami v rozhovorech s vývojáři. Dobrou zprávou je, že se v podstatě jedná pouze o speciální formáty pro organizaci a ukládání dat.

V tomto článku vám ukážu 10 nejběžnějších datových struktur. U každého z nich jsou uvedena videa a příklady jejich implementace v JavaScriptu. Abychom vám pomohli procvičit, zahrnul jsem také některá cvičení z beta verze nového kurikula freeCodeCamp.

V článku uvádím příklady implementace těchto datových struktur v JavaScriptu, budou také užitečné, pokud používáte nízkoúrovňový jazyk, jako je C. Mnoho vysokoúrovňových jazyků, včetně JavaScriptu, již má vestavěné implementace většiny z nich; datové struktury, o kterých budeme diskutovat. Tyto znalosti však budou vážnou výhodou při hledání zaměstnání a budou užitečné při psaní vysoce výkonného kódu.

Propojené seznamy

Propojený seznam je jednou ze základních datových struktur. Často se přirovnává k poli, protože mnoho dalších struktur lze implementovat pomocí pole nebo propojeného seznamu. Tyto dva typy mají výhody i nevýhody.

Takto funguje propojený seznam

Propojený seznam se skládá ze skupiny uzlů, které dohromady tvoří sekvenci. Každý uzel obsahuje dvě věci: skutečná data, která ukládá (může to být jakýkoli typ dat) a ukazatel (nebo odkaz) na další uzel v sekvenci. Existují také dvojitě propojené seznamy: v nich má každý uzel ukazatel na další i předchozí prvek v seznamu.

Mezi základní operace v propojeném seznamu patří přidávání, odstraňování a vyhledávání prvku v seznamu.

Časová složitost propojeného seznamu ═════════ ╗ ╗ Algoritmus ║Průměr ║ Nejhorší případ ║ ╠════╕═══╕══════ ═══════ ════ ╬═════════ ══════╣ ║ Vložit ║ O(n) ║ O(n) ╕)║ O(n) ╕)║ O Hledat ║ O(1) ║ O(1) ║ ║ Smazat ║ O (1) ║ O(1) ║ ╚════════════╕═══╕════════╕═══════ ═ ═══╩════ ══════ ═════╝

Cvičení z freeCodeCamp

Hromady

Zásobník je základní datová struktura, která umožňuje přidávat nebo odebírat prvky pouze na začátku. Je to jako stoh knih: pokud se chcete podívat na knihu uprostřed stohu, musíte nejprve odstranit ty nahoře.

Zásobník je organizován podle principu LIFO (Last In First Out). To znamená, že poslední prvek, který přidáte do zásobníku, bude první, který z něj vypadne.


Takto funguje zásobník

Zásobníky mohou provádět tři operace: přidání prvku (push), odebrání prvku (pop) a zobrazení obsahu zásobníku (pip).

Časová složitost zásobníku ════════╗ ║ Algoritmus ║Průměrná hodnota ║ Nejhorší případ ║ ╠══════╕═══╕════╕════╕═══║ ═════════ ═ ╬══════════ ═════╣ ║ Mezerník ║ O(n) ║ O(n) ║ ║ Hledat ║║ O(n) ║║ O(n) ║ ) ║ O(1) ║ ║ Smazat ║ O( 1) ║ O(1) ║ ╚═══════════╩╕════╕══════ ═══ ╩════ ═══════ ════╝

Cvičení z freeCodeCamp

Fronty

Tuto strukturu si lze představit jako linku v obchodě s potravinami. Ten, kdo přišel na samém začátku, je obsluhován jako první – jako v životě.


Takhle funguje fronta

Fronta je uspořádána podle principu FIFO (First In First Out). To znamená, že prvek můžete odstranit až poté, co byly odstraněny všechny dříve přidané prvky.

Fronta umožňuje provádět dvě základní operace: přidávání prvků na konec fronty ( do fronty) a odstraňte první prvek ( fronta).

Složitost fronty ════════╗ ║ Algoritmus ║Průměrná hodnota ║ Nejhorší případ ║ ╠═════╕═══╕╕␐═╕╕␐═╕══║ ═════════ ═ ╬══════════ ═════╣ ║ Mezerník ║ O(n) ║ O(n) ║ ║ Hledat ║║ O(n) ║║ O(n) ║ ) ║ O(1) ║ ║ Smazat ║ O( 1) ║ O(1) ║ ╚═══════════╩╕════╕══════ ═══ ╩════ ═══════ ════╝

Cvičení z freeCodeCamp

Sady



Takhle vypadá hodně

Sada ukládá datové hodnoty v žádném konkrétním pořadí, aniž by je opakovala. Nejen, že vám umožňuje přidávat a odebírat prvky, existuje několik dalších důležitých funkcí, které lze použít na dvě sady najednou.

  • Sjednocení spojuje všechny prvky ze dvou různých sad do jedné (bez duplikátů).
  • Průnik analyzuje dvě množiny a vytvoří další z prvků, které jsou přítomny v obou původních množinách.
  • Rozdíl zobrazí seznam prvků, které jsou v jedné sadě, ale ne v jiné.
  • Podmnožina vytváří booleovskou hodnotu, která označuje, zda jedna sada obsahuje všechny prvky jiné sady.
Příklad implementace v JavaScriptu

Cvičení z freeCodeCamp

Mapa

Mapa je struktura, která ukládá data v párech klíč/hodnota, kde je každý klíč jedinečný. Někdy se mu také říká asociativní pole nebo slovník. Mapa se často používá k rychlému vyhledání dat. Umožňuje vám provádět následující věci:
  • přidat páry do sbírky;
  • odstranit páry ze sbírky;
  • změnit existující pár;
  • vyhledejte hodnotu spojenou s konkrétním klíčem.

Takto funguje struktura mapy

Cvičení z freeCodeCamp

Hash tabulky

Takto funguje hashovací tabulka a hashovací funkce

Hašovací tabulka je struktura podobná mapě, která obsahuje páry klíč/hodnota. Využívá hashovací funkci k výpočtu indexu do pole datových bloků k nalezení požadované hodnoty.

Hašovací funkce obvykle přijímá řetězec znaků jako vstup a vydává číselnou hodnotu. Pro stejný vstup by hashovací funkce měla vrátit stejné číslo. Pokud jsou dva různé vstupy hašovány na stejný výsledek, dojde ke kolizi. Cílem je, aby takových případů bylo co nejméně.

Když tedy zadáte pár klíč/hodnota do hašovací tabulky, klíč projde hašovací funkcí a změní se na číslo. Toto číslo se pak použije jako skutečný klíč, který odpovídá konkrétní hodnotě. Když znovu zadáte stejný klíč, hašovací funkce jej zpracuje a vrátí stejný číselný výsledek. Tento výsledek bude poté použit k nalezení související hodnoty. Tento přístup výrazně snižuje průměrnou dobu vyhledávání.

Časová složitost hašovací tabulky ═════════ ═╗ ║ Algoritmus ║Průměr ║ Nejhorší případ ║ ╠═══╕════════════╕═══ ════════ > Vložit ║ O(1) ║ O(n) ║ ║ Smazat ║ O(1) ║ O(n) ║ ╚═══════════╕════╕═══════ ═ ════╩════ ═════ ══════╝

Cvičení z freeCodeCamp

Binární vyhledávací strom


Binární vyhledávací strom

Strom je datová struktura skládající se z uzlů. Má následující vlastnosti:

  • Každý strom má kořenový uzel (nahoře).
  • Kořenový uzel má nula nebo více podřízených uzlů.
  • Každý podřízený uzel má nula nebo více podřízených uzlů a tak dále.
Binární vyhledávací strom má dvě další vlastnosti:
  • Každý uzel má až dva podřízené uzly (potomky).
  • Každý uzel je menší než jeho potomci napravo a jeho děti nalevo jsou menší než on sám.
Binární vyhledávací stromy umožňují rychle najít, přidat a odebrat prvky. Jsou navrženy tak, aby čas každé operace byl úměrný logaritmu celkového počtu prvků ve stromu.

Časová složitost binárního vyhledávacího stromu ════════ ╗ ║ Algoritmus ║Průměrná hodnota ║Nejhorší případ ║ ╠═══╕════╕════╕════ ═══════ ═════ ╬═════════ ═════╣ ║ Space ║ O (n) ║ o (n) ║ ║ Hledání ║ o (log n) ║ o (n) ║ ║ vložení ║ o (log n) ║ o (n) ║ ║ Odstraňte ║ o (log n) ║ o (n) ║ ╚═══════════╩═══════════ ══════╩════ ════ ══════╝


Cvičení z freeCodeCamp

Strom předpon

Prefixový (načtený) strom je typ vyhledávacího stromu. Ukládá data do štítků, z nichž každý představuje uzel ve stromu. Takové struktury se často používají k ukládání slov a rychlému vyhledávání v nich – například pro funkci automatického doplňování.

Takto funguje strom předpon

Každý uzel ve stromu jazykových předpon obsahuje jedno písmeno slova. Chcete-li vytvořit slovo, musíte sledovat větve stromu a míjet jedno písmeno po druhém. Strom se začne větvit, když se pořadí písmen liší od ostatních slov v něm nebo když slovo končí. Každý uzel obsahuje písmeno (data) a booleovskou hodnotu, která označuje, zda je ve slově poslední.

Podívejte se na obrázek a zkuste tvořit slova. Vždy začněte s kořenovým uzlem nahoře a postupujte dolů. Tento strom obsahuje následující slova: míč, netopýr, panenka, dělat, dork, dorm, poslat, smysl.

Cvičení z freeCodeCamp

Binární halda

Binární halda je další stromová datová struktura. Každý uzel v něm nemá více než dvě děti. Je to také dokonalý strom: to znamená, že všechny úrovně v něm jsou zcela vyplněny daty a poslední je vyplněna zleva doprava.


Takto fungují minimální a maximální haldy

Binární halda může být minimální nebo maximální. V maximální hromadě je klíč libovolného uzlu vždy větší nebo roven klíčům jeho potomků. Na minimální hromadě vše funguje obráceně: klíč jakéhokoli uzlu je menší nebo roven klíčům jeho potomků.

Pořadí úrovní v binární hromadě je důležité, na rozdíl od pořadí uzlů na stejné úrovni. Obrázek ukazuje, že v minimální hromadě na třetí úrovni jsou hodnoty mimo pořadí: 10, 6 a 12.


Časová složitost binární haldy ═════════ ═╗ ║ Algoritmus ║ Průměr ║ Nejhorší případ ║ ╠═══╕╕═════════ ════════ ═══ ══╬═══════ ════════╣ ║ Mezerník ║ O(n) ║ O(n) ╕ n) Hledat Vložit ║ O(1) ║ O(log n) ║ ║ Smazat ║ O(log n) ║ O(log n) ║ ║ Podívejte se ║ O(1) ║ O(1) ║ ╚╕════════ ══╩══════════ ════════╩═════╕═══════════

Cvičení z freeCodeCamp

Graf

Grafy jsou kolekce uzlů (vrcholů) a spojení mezi nimi (hrany). Říká se jim také sítě.

Grafy se dělí na dva hlavní typy: řízené a neorientované. V neorientovaných grafech nemají hrany mezi uzly žádný směr, zatímco hrany v orientovaných grafech ano.

Nejčastěji je graf zobrazen v jedné ze dvou forem: může to být seznam sousedství nebo matice sousedství.


Graf jako matice sousednosti

Seznam sousedství si lze představit jako seznam prvků, přičemž jeden uzel je vlevo a všechny ostatní uzly, ke kterým se připojuje, jsou vpravo.

Matice sousedství je mřížka čísel, kde každý řádek nebo sloupec odpovídá jinému uzlu v grafu. Na průsečíku řádku a sloupce je číslo, které označuje přítomnost spojení. Nuly znamenají, že chybí; jednotky - že existuje souvislost. K označení hmotnosti každého spojení se používají čísla větší než jedna.

Pro zobrazení hran a vrcholů v grafech existují speciální algoritmy - tzv. traversální algoritmy. Mezi jejich hlavní typy patří vyhledávání do šířky ( vyhledávání do šířky) a do hloubky ( hloubkové hledání). Alternativně je lze použít k určení, jak blízko jsou určité vrcholy grafu ke kořenovému uzlu. Níže uvedené video ukazuje, jak provést v JavaScriptu vyhledávání do šířky.

Klasifikace datových struktur

Data v paměti počítače jsou reprezentována jako sekvence bitů. Bitové sekvence nejsou dobře strukturované, což ztěžuje jejich použití v praxi. V praxi se proto využívají datové struktury.

Definice 1

Struktura data jsou souborem datových prvků a vnitřních vztahů mezi nimi.

Existují jednoduchý A integrovaný datové struktury. Jednoduché datové struktury jsou redukovány na bity a jsou organizovány přímo z bitů. Mezi jednoduché struktury patří:

  • číselný;
  • bit;
  • symbolický;
  • logický;
  • ukazatele.

Integrované datové struktury jsou organizovány z jednoduchých a jiných integrovaných struktur.

Je třeba rozlišovat fyzikální A logický datová struktura. Když mluvíme o fyzické struktuře jednoduchých typů, týká se to jejich velikosti a způsobu uspořádání bitů v paměti. Z hlediska logické struktury je jednoduchý typ nedělitelnou elementární jednotkou.

Definice 2

Variabilita struktura se nazývá změna počtu prvků a spojení mezi nimi.

V souladu se znakem proměnlivosti se struktury dělí na

  • Static (vecotr, array, set, record, table);
  • Dynamické (zásobník, fronta, řetězec, lineární propojené seznamy, rozvětvené propojené seznamy, grafy, stromy.).

Prvky ve struktuře mohou být seřazené nebo neuspořádané. V souladu s touto vlastností se struktury dělí na

  • Nelineární (více propojený seznam, graf, strom);
  • Lineární se sekvenčním rozdělením (vektor, řetězec, pole, zásobník, fronta);
  • Lineární s libovolně připojeným rozdělením (jednoduše spojené a dvojitě propojené seznamy).

Jednoduché struktury a datové typy

Jednoduché datové struktury se také nazývají primitiva nebo základní struktury. V programovacích jazycích jsou jednoduché datové struktury reprezentovány jednoduchými datovými typy. Různé programovací jazyky mají mírně odlišné datové typy, ale existují některé společné principy.

Celočíselný typ používá se k vyjádření počtu samostatných objektů. Celá čísla mohou být bez znaménka nebo záporná. Vnitřní reprezentace celého čísla může být 1, 2 nebo 4 bajty.

Reálná čísla jsou reprezentována jako formát s plovoucí desetinnou čárkou. Číslo s plovoucí desetinnou čárkou je reprezentováno dvěma celými čísly, exponentem a matissem a znaménkem.

V případě dvojkové číselné soustavy B=2.

Desetinný typ Ne všechny programovací jazyky jsou podporovány. Číslo tohoto typu je reprezentováno jako m desetinných číslic, z nichž d číslic je vpravo od desetinné čárky.

Pro případy, kdy potřebujete pracovat s jednotlivými binárními číslicemi čísla, je k dispozici bitový datový typ. Data v něm jsou reprezentována množinou bitů spojených do bajtů nebo slov. Všechny operace s typem bitu zahrnují individuální přístup ke každému bitu.

Variabilní booleovský typ může nabývat jedné ze dvou hodnot: true nebo false. K uložení booleovské proměnné je potřeba jeden bajt paměti. V tomto případě je hodnota „false“ zakódována hodnotou nula bajtů a hodnota „true“ je zakódována jinou hodnotou než nula.

Typ postavy umožňuje reprezentovat data jako sekvenci symbolů nějaké předem určené množiny. Každý symbol sady je uložen v paměti jako sekvence bitů. Korespondence mezi znaky a takovými sekvencemi se nazývá kódování. Různá kódování představují znaky jako bitové sekvence různé délky.

Ukazatel je proměnná, jejíž hodnota je adresa paměťové buňky. Ukazatel tedy odkazuje na určitý blok dat a označuje jeho první buňku.

Příklady statických konstrukcí

Chcete-li odkazovat na prvek, musíte použít název pole a index prvku. V paměti jsou pole umístěna v buňkách umístěných za sebou.

Příklad 1

Dostaneme pole s názvem A.

Pak se prvek A rovná 30.

Příklad 2

Dvourozměrné pole je pole, jehož každý prvek je sám o sobě jednorozměrným polem.

Ve dvourozměrném poli má každý prvek dva indexy.

Definice 4

Záznamy (pole hash, asociativní pole) jsou pole, která nejsou indexována podle přirozených čísel, ale podle řetězců.

Index prvku v takovém poli se nazývá klíč. K odkazování na prvek se používá název pole a index.

Příklad 3

Nechť je dáno pole hash s názvem B.

Potom je prvek pole B['vegetable'] roven 'cucumber'.

Příklady dynamických struktur

U dynamických struktur je paměť alokována za chodu během provádění programu. Ukazatele jsou široce používány v různých programovacích jazycích pro práci s dynamickými datovými typy. Samotné ukazatele jsou statického typu.

Stoh je vektor, ve kterém je každý následující prvek adresován ukazatelem na aktuální prvek. Obrázky ukazují postupné přidávání prvků do stohu a postupné odebírání.

Chcete-li extrahovat prvek, musíte nejprve postupně extrahovat všechny prvky přidané za ním. Prvek přidaný jako první lze odebrat až jako poslední.

Fronta také dynamická struktura, která se od zásobníku liší přítomností dvou ukazatelů: na první a poslední prvek fronty. Nové prvky se zapisují za poslední zapsaný prvek. A výběr prvků začíná od prvního. Pomocí tohoto algoritmu můžete získat první prvek, který byl přidán jako první.

| Porozumění databázím

Lekce 35 - 37
Porozumění databázím

Po prostudování tohoto tématu se naučíte:

Proč hraje při vytváření databází důležitou roli pojem „předmětová oblast“;
- proč se potřebujete zapojit do strukturování dat;
- proč je tabulka preferovanou formou prezentace dat;
- jaké jsou základní pojmy databáze.

Role informačního systému

Po mnoho generací lidé používali různé způsoby ukládání a přenosu informací. Na počátku se informace předávaly z generace na generaci ve formě legend a ústních příběhů. Vznik a rozvoj tisku umožnil přenášet a uchovávat informace prostřednictvím knih. Objevy v oblasti elektřiny vedly ke vzniku telegrafu, telefonu, rádia a televize, které umožňovaly rychlý přenos a akumulaci informací.

Rozvoj pokroku vedl k prudkému nárůstu informačního toku a problematika jejich uchovávání a zpracování byla stále aktuálnější. Nastala paradoxní situace: roste informační hlad, způsobený nikoli nedostatkem informací, ale jejich nadbytkem. Najít informace, které zajímají konkrétního uživatele v přemírě informací, je stále obtížnější.

S nástupem výpočetní techniky se proces ukládání a hlavně zpracování informací značně zjednodušil. Rozvoj výpočetní techniky na bázi mikroprocesorů vede ke zdokonalování počítačů a softwaru. Objevují se programy, které dokážou zpracovat velké toky informací. Pomocí takových programů vznikají informační systémy.

Účelem každého informačního systému je zpracovávat data o objektech reálného světa a poskytovat o nich informace, které člověk potřebuje. Pokud vezmeme v úvahu kolekci některých objektů, můžeme identifikovat objekty, které mají stejné vlastnosti. Takové předměty lze kombinovat do samostatných tříd (ryby, nábytek, studenti atd.). V rámci vybrané třídy mohou být objekty uspořádány podle určitých charakteristik, například abecedně, nebo mohou být vybrány podle některých obecných charakteristik, například podle barvy nebo materiálu.

Vzorkování (seskupení) podle určitých charakteristik značně usnadňuje vyhledávání a výběr potřebných informací.

Chcete si například koupit dřevěný počítačový stůl vyrobený z ořechu. K tomu potřebujete informace o tom, kde se takové stoly prodávají. Můžete jej získat různými způsoby, například:

♦ obejděte všechny obchody s nábytkem ve městě a najděte stůl, který potřebujete;
♦ studovat katalogy nábytku a ceníky prodejen nábytku;
♦ kontaktovat informační systém s potřebnou žádostí.

To je zřejmé první způsob může vést k pozitivnímu výsledku, ale bude to vyžadovat hodně úsilí a času.

Druhý způsob optimističtější, protože v tomto případě nemusíte nikam chodit, ale stačí použít telefon a zavolat do obchodů, které prodávají podobný nábytek. Poslední způsob zahrnuje přístup do informačního systému, kde v sekci Nábytek je třeba vybrat - Stoly, mezi tabulkami vybrat Počítač, poté - Dřevěné, poté zvážit Stoly z ořechového dřeva a automaticky se telefonicky připojit k příslušné prodejně a přejít na zadanou adresu pro nákup. V naší situaci je třetí způsob pravděpodobně nejracionálnější. 

Jak je takový informační systém organizován a jak lze organizovat ukládání a prezentaci informací v něm?

Informační systém musí v prvé řadě pracovat s daty z konkrétní věcné oblasti, pro kterou musí existovat popis v podobě informačního modelu. Předmětem může být oblast lidské činnosti: podnik, škola, klinika atd. Může to být také oblast lidských znalostí: biologie, geografie atd.

Předmětová oblast je tvořena souborem objektů, které jsou mezi sebou v určitých vztazích a souvislostech.

Vezmeme-li jako příklad obor Škola, pak v této oblasti můžeme rozlišit tyto třídy objektů: studenti, učitelé, obslužný personál, vzdělávací subjekty, prostory atd. Mezi těmito objekty existují určité vztahy a souvislosti.

Podívejme se na další příklad. V oborové oblasti Poliklinika lze rozlišit tyto třídy objektů: lékaři, pacienti, diagnózy, odbornosti lékařů atd. Vazby mezi objekty zvoleného oborového okruhu jsou znázorněny na Obr. 4.1.

Rýže. 4.1. Příklad vztahu mezi třídami objektů v doméně polikliniky

Podívejme se na další příklad. Všichni milujeme písničky a každý má své oblíbené písničky a interprety. Bylo by žádoucí mít přístup k informačnímu systému, který by umožňoval ukládat, vyhledávat a vybírat oblíbené skladby. Je zřejmé, že součástí takového informačního systému by měly být programy zaměřené na práci s objektovými třídami Song a Performer.

Nabízí se otázka: jak by měly být informace o těchto objektech prezentovány?

Dalo by se popsat takto: píseň „Spice up your life“ v podání anglické skupiny „Spice Girls“, napsaná ve stylu „Hip-hop“ v roce 1997, nebo například píseň z roku 1996 od ruské skupiny „Ivanushki International“ pod názvem „Clouds“ ve stylu „Ror“.

V tomto popisu je společně zaznamenán název určitého parametru a jeho hodnota, například: song (název parametru) „Clouds“ (hodnota parametru). V tomto případě jsou hodnoty parametrů data a název parametru je sémantickou charakteristikou těchto dat. Libovolnou třídu objektů lze popsat pomocí informačního modelu. K tomu je nutné určit, jaké parametry by měly charakterizovat objekty této třídy. Takové parametry mohou být například: název skladby, interpret, styl, datum vytvoření, země. Seznam těchto parametrů by měl být určen cílem, to znamená, že uveďte, jaký je váš zájem o skladbu a jejího interpreta.

Tyto informace mohou být prezentovány různými způsoby, například ve formě seznamu:

1. „Spice up your life“, „Spice Girls“, Hip-hop, 1997, Anglie;
2. „Clouds“, „Ivanushki International“, Pop, 1996, Rusko;
3. “The Sailor”, “Agatha Christie”, Rock, 1997, Rusko.

S informacemi zaznamenanými v této podobě je velmi obtížné pracovat. Za prvé, jsou zde uvedeny pouze údaje a význam těchto údajů není popsán. Ne každý může pochopit, co tato data znamenají. Za druhé, i když je význam dat jasný, abychom našli požadovanou skladbu v dlouhém seznamu, musíme pečlivě prozkoumat každý řádek, dokud se nedostaneme k tomu správnému. Provádění jakýchkoli výběrů, například výběr skladeb se stejným stylem, je ještě obtížnější.
Dalším velmi běžným a přirozeným způsobem prezentace dat je tabulka. O této formě prezentace dat jsme se již zmiňovali více než jednou. Informace pro každou skladbu lze zobrazit ve formě tabulky (viz tabulka 4.1). 
Podívejme se na strukturu tabulky, kterou jsme vytvořili. Celá tabulka představuje třídu objektů Song. Každý sloupec v tabulce odráží data pro jednu charakteristiku. První řádek obsahuje záhlaví sloupců odpovídající názvům parametrů. První řádek tabulky odpovídá informačnímu modelu objektu Song.

Tabulka 4.1. Informace o skladbě


Tím jsme přešli ke strukturované formě prezentace dat, ve které jsou data a jejich sémantická interpretace od sebe oddělena a v nějaké formě prezentována. Tento proces se nazývá „strukturování dat“.

Strukturování dat je proces, který vede k určité formě záznamu dat o objektech jedné třídy.

Zohledněním vlastností objektu a vytvořením informačního modelu ve formě tabulky získáme vizuálnější a pohodlnější formu záznamu informací. Nyní můžete přemýšlet o tom, jaké akce lze s tímto objektem provést. Popsat jakoukoli skladbu se stalo pohodlnějším, protože parametry, které ji charakterizují, byly definovány a není třeba se rozptylovat jinými vlastnostmi objektu. Vyhledávání a výběr informací je mnohem jednodušší. Chcete-li například najít a vybrat skladby od jednoho interpreta, podíváme se pouze do sloupce Interpret.

Základní pojmy databáze

Základem každého informačního systému je databáze, která uchovává informace o velkém počtu instancí vzájemně souvisejících tříd objektů. Databáze je chápána jako soubor speciálně uspořádaných dat, která jsou uložena na nějakém hmotném médiu. Upozorňujeme, že se nejedná o soubor izolovaných dat. Data musí být strukturovaná a propojená, aby si člověk mohl udělat představu o jakémkoli objektu, jevu nebo procesu.

Databáze je pojmenovaná sbírka strukturovaných dat určité tematické oblasti.

Základní pojmy databáze jsou pole a záznam.

Pole je nejjednodušší databázový objekt určený k ukládání hodnot jednoho parametru skutečného popisovaného objektu.

Pole je charakterizováno názvem a datovým typem. Ve výše uvedené databázi jsou pole Název skladby, Interpret, Styl, Rok, Země. Pole v databázi mohou mít různé datové typy: textové, číselné, datumové, časové, peněžní atd. V tabulce. 4.1, který poskytuje informace o skladbách, názvy polí jsou uvedeny v prvním řádku a hodnoty každého pole jsou uvedeny v odpovídajícím sloupci.

Databáze obsahuje informace o mnoha parametrech doménových objektů. Proto je důležité, v jakém pořadí budou tyto parametry uspořádány (zaznamenávány). Například je logické uvádět informace o studentovi ve formě záznamu, kde bude pořadí parametrů následující: Příjmení, Jméno, Patronymie, Datum narození, Ulice, Dům, Byt. Pro srovnání uvažujme nešťastné pořadí uspořádání stejných parametrů: Něvskij pr., Tichonov, 12.07.1989, č. 15, Victor, apt. 48, Nikolajevič.

Důležitým krokem při vytváření databáze je tedy vývoj struktury záznamů.

Struktura záznamu je souborem logicky souvisejících polí, které charakterizují parametry reálného objektu.

Záznam je sbírka hodnot parametrů pro konkrétní objekt.

Pokud jsou informace o objektu prezentovány ve formě tabulky, pak první řádek tabulky vždy obsahuje názvy parametrů, to znamená, že určuje strukturu záznamu. Všechny ostatní řádky jsou záznamy.

Testové otázky a úkoly

1. Jakou roli hraje informační systém při práci s informacemi?

2. Jaký je účel tvorby informačního systému?

3. Co je předmětová oblast?

4. Uveďte příklady, kdy je potřeba vybrat potřebné informace? jak to děláš? Je koncept „oboru“ důležitý?

5. Uveďte příklady různých tematických oblastí a zvýrazněte v nich předměty, které vás budou zajímat. Jaké parametry by měly charakterizovat objekty této třídy?

6. Co je to strukturování dat?

7. Co je to databáze?

8. Co je to obor?

9. Co je to struktura záznamu?

10. Co je to rekord?

11. Prezentujte parametry objektů v konkrétní tematické oblasti ve formě tabulky. Zadejte pole, záznamy a strukturu záznamů v tabulce.




Nahoru