Estructuración de datos mediante JavaScript: ¿Qué es una estructura de datos? El concepto de datos estructurados. Definición y propósito de una base de datos

  • Traducción

Por supuesto, puedes ser un programador exitoso sin un conocimiento sagrado de las estructuras de datos, pero son absolutamente indispensables en algunas aplicaciones. Por ejemplo, cuando necesita calcular el camino más corto entre dos puntos en un mapa o encontrar un nombre en una guía telefónica que contiene, digamos, un millón de entradas. Sin mencionar que las estructuras de datos se utilizan todo el tiempo en la programación deportiva. Veamos algunos de ellos con más detalle.

Cola

¡Saluda a Loopy!

A Loopy le encanta jugar hockey con su familia. Y por "juego" me refiero a:

Cuando las tortugas entran volando por la puerta, son arrojadas a la parte superior de la pila. Tenga en cuenta que la primera tortuga que se agrega a la pila es la primera en abandonarla. se llama Cola. Al igual que en las colas que vemos en la vida cotidiana, el primer elemento que se añade a la lista es el primero en salir de ella. Esta estructura también se llama FIFO(Primero en entrar, primero en salir).

¿Qué pasa con las operaciones de inserción y eliminación?

Q = def insert(elem): q.append(elem) #agregar un elemento al final de la cola print q def eliminar(): q.pop(0) #eliminar el elemento cero de la cola print q

Pila

Después de un partido de hockey tan divertido, Loopy prepara tortitas para todos. Los pone en una pila.

Cuando todos los panqueques están listos, Loopy se los sirve a toda la familia, uno por uno.

Tenga en cuenta que el primer panqueque que haga se servirá al final. se llama Pila. El último elemento añadido a la lista será el primero en abandonarla. Esta estructura de datos también se llama LIFO(Último en entrar, primero en salir).

¿Agregar y eliminar elementos?

S = def push(elem): #Agregar un elemento a la pila - Push s.append(elem) print s def customPop(): #Eliminar un elemento de la pila - Pop s.pop(len(s)-1) imprimir

Montón

¿Has visto alguna vez una torre de densidad?

Todos los elementos de arriba a abajo están ubicados en sus lugares, según su densidad. ¿Qué pasa si arrojas un objeto nuevo adentro?

Ocupará espacio dependiendo de su densidad.

Así es más o menos como funciona. Montón.

Un montón es un árbol binario. Esto significa que cada elemento padre tiene dos hijos. Y aunque llamamos montón a esta estructura de datos, se expresa mediante una matriz regular.
Además, el montón siempre tiene una altura de logn, donde n es el número de elementos.

La figura muestra un montón máximo basado en la siguiente regla: hijos menos de los padres. También hay montones de min-heap, donde los niños siempre están más de los padres.

Algunas funciones simples para trabajar con montones:

Montón global global currSize def parent(i): #Obtener el índice del padre para el i-ésimo elemento return i/2 def left(i): #Obtener el hijo izquierdo del i-ésimo elemento return 2*i def right (i): #Obtener el hijo correcto del i-ésimo retorno (2*i + 1)

Agregar un elemento a un montón existente
Para empezar, agregamos un elemento al final del montón, es decir. hasta el final de la matriz. Luego lo intercambiamos con su elemento padre hasta que encaje en su lugar.

Algoritmo:

  1. Agregue un elemento al final del montón.
  2. Compare el elemento agregado con el padre; Si el orden es correcto, paramos.
  3. Si no, intercambia los elementos y vuelve al punto anterior.
Código:

Def swap(a, b): #intercambia el elemento con índice a por el elemento con índice b temp = montón[a] montón[a] = montón[b] montón[b] = temp def insert(elem): global currSize index = len(heap) heap.append(elem) currSize += 1 par = parent(index) flag = 0 while flag != 1: if index == 1: #Llegamos al elemento raíz flag = 1 elif heap > elem : #Si el índice del elemento raíz es mayor que el índice de nuestro elemento - nuestro elemento está en su lugar flag = 1 else: #Intercambia el elemento padre con nuestro swap(par, index) index = par par = parent(index) ) montón de impresión
El número máximo de pasadas del bucle while es igual a la altura del árbol, o logn, por lo que la complejidad del algoritmo es O(logn).

Recuperando el elemento de montón máximo
El primer elemento del montón es siempre el máximo, por lo que simplemente lo eliminaremos (después de recordarlo primero) y lo reemplazaremos con el más bajo. Luego colocaremos el montón en el orden correcto usando la función:

MaxHeapify().

Algoritmo:

  1. Reemplace el elemento raíz con el elemento inferior.
  2. Compare el nuevo elemento raíz con sus hijos. Si están en el orden correcto, detente.
  3. De lo contrario, reemplace el elemento raíz con uno de los hijos (más pequeño para el montón mínimo, más grande para el montón máximo) y repita el paso 2.

Def extractMax(): global currSize if currSize != 0: maxElem = heap heap = heap #Reemplazar el elemento raíz con el último heap.pop(currSize) #Eliminar el último elemento currSize -= 1 #Reducir el tamaño del montón maxHeapify( 1) return maxElem def maxHeapify(index): global currSize lar = index l = left(index) r = right(index) #Calcular qué elemento secundario es más grande; si es más grande que el padre, intercambie lugares si yo<= currSize and heap[l] >montón: lar = l si r<= currSize and heap[r] >montón: lar = r si lar != índice: swap(índice, lar) maxHeapify(lar)
Nuevamente, el número máximo de llamadas a la función maxHeapify es igual a la altura del árbol, o logn, lo que significa que la complejidad del algoritmo es O(logn).

Hacemos un montón a partir de cualquier matriz aleatoria.
Bien, hay dos formas de hacer esto. La primera es insertar cada elemento en el montón uno por uno. Es simple, pero completamente ineficaz. La complejidad del algoritmo en este caso será O(nlogn), porque la función O(logn) se ejecutará n veces.

Una forma más eficiente es utilizar la función maxHeapify para ' submontones', desde (currSize/2) hasta el primer elemento.

La complejidad será O(n), y la prueba de esta afirmación, lamentablemente, está más allá del alcance de este artículo. Simplemente comprenda que los elementos en la parte currSize/2 a currSize del montón no tienen hijos, y la mayoría de los 'submontones' formados de esta manera tendrán una altura menor que la de logn.

Def buildHeap(): global currSize for i in range(currSize/2, 0, -1): #el tercer argumento en range() es el paso de búsqueda, en este caso determina la dirección.

imprimir montón maxHeapify(i) currSize = len(montón)-1

De verdad, ¿por qué es todo esto? Se necesitan montones para implementar un tipo especial de clasificación llamado, curiosamente, " clasificación de montón

" A diferencia de la “clasificación por inserción” y la “clasificación por burbujas”, menos eficientes, con su terrible complejidad O(n2), la “clasificación por montón” tiene complejidad O(nlogn).

La implementación es indecentemente simple. Simplemente siga sacando el elemento máximo (raíz) del montón secuencialmente y escribiéndolo en la matriz hasta que el montón esté vacío.
Def heapSort(): for i in range(1, len(heap)): print heap heap.insert(len(heap)-i, extractMax()) #inserta el elemento máximo al final de la matriz currSize = len( montón)-1

Para resumir todo lo anterior, escribí algunas líneas de código que contienen funciones para trabajar con el montón y, para los fanáticos de la programación orientada a objetos, formateé todo como una clase.

Fácil, ¿no? ¡Aquí viene el Loopy de celebración!

Picadillo

Después de un tiempo las tortugas quedaron completamente confundidas.

Entonces sacó otro juguete para facilitar un poco el proceso.

Se volvió mucho más fácil porque las tortugas ya sabían que las figuras estaban ordenadas por forma. ¿Qué pasaría si etiquetáramos cada pilar?

Las tortugas ahora necesitan comprobar un pilar con un número determinado y elegir el correcto entre un número mucho menor de figuras. ¿Y si además tenemos un pilar independiente para cada combinación de forma y color?

Digamos que el número de columna se calcula de la siguiente manera:

nombre completo verano tre cuadrado
f+i+o+t+r+e = 22+10+16+20+18+6 = Columna 92

Kra somnoliento derecho triángulo
k+p+a+p+p+i = 12+18+1+17+18+33 = Columna 99

Sabemos que 6*33 = 198 combinaciones posibles, lo que significa que necesitamos 198 pilares.

Llamemos a esta fórmula para calcular el número de columna: función hash.

Código:
def hashFunc(piece): palabras = piece.split(" ") #dividir la cadena en palabras color = palabras forma = palabras poleNum = 0 for i in range(0, 3): poleNum += ord(color[i]) - 96 poleNum += ord(forma[i]) - 96 return poleNum
(con cirílico es un poco más complicado, pero lo dejé así por simplicidad. - aprox.)

Ahora bien, si quisiéramos saber dónde se guarda el cuadrado rosa, podríamos calcular:
hashFunc("cuadrado rosa")

Este es un ejemplo de una tabla hash donde la ubicación de los elementos está determinada por una función hash.
Con este enfoque, el tiempo dedicado a buscar cualquier elemento no depende del número de elementos, es decir O(1). En otras palabras, el tiempo de búsqueda en una tabla hash es un valor constante.

Está bien, pero digamos que estamos buscando " auto amel derecho triángulo” (si, por supuesto, existe el color “caramelo”).

HashFunc("rectángulo caramelo")
nos devolverá 99, que es el mismo número para el rectángulo rojo. Se llama " Colisión" Para resolver una colisión utilizamos “ método de cadena”, implicando que cada columna almacena una lista en la que buscamos el registro que necesitamos.

Así que simplemente colocamos el rectángulo de caramelo sobre el rojo y elegimos uno cuando la función hash apunte a ese pilar.

La clave para una buena tabla hash es elegir una función hash adecuada. Esto es sin duda lo más importante al crear una tabla hash, y la gente dedica una gran cantidad de tiempo a desarrollar funciones hash de calidad.
En buenas tablas, ninguna posición contiene más de 2 o 3 elementos; de lo contrario, el hash no funciona bien y es necesario cambiar la función hash.

Una vez más, ¡busque independientemente del número de elementos! Podemos usar tablas hash para cualquier cosa que sea de tamaño gigantesco.

Las tablas hash también se utilizan para buscar cadenas y subcadenas en grandes fragmentos de texto utilizando el algoritmo. Rabin-Karp o algoritmo Knuth-Morris-Pratt, que es útil, por ejemplo, para identificar plagio en artículos científicos.

Creo que podemos terminar aquí. En el futuro planeo observar estructuras de datos más complejas, p. Pila de Fibonacci Y Árbol de segmentos. Espero que esta guía informal te haya resultado interesante y útil.

Traducido para Habr bloqueado

Un banco de datos es una forma de organizar el almacenamiento y el acceso a la información y es un sistema de datos, software, herramientas técnicas, lingüísticas, organizativas y metodológicas especialmente organizadas que están diseñadas para garantizar la acumulación centralizada y el uso colectivo de datos con fines múltiples.

El banco de datos deberá cumplir con los siguientes requisitos:

  • * satisfacer las necesidades de información de los usuarios externos, brindar la capacidad de almacenar y cambiar grandes volúmenes de información diversa;
  • * cumplir con el nivel especificado de confiabilidad de la información almacenada y su coherencia;
  • * acceder a los datos sólo a usuarios con la autoridad adecuada;
  • * permitir buscar información por cualquier grupo de características;
  • * cumplir con los requisitos de desempeño necesarios al procesar solicitudes;
  • * ser capaz de reorganizarse y expandirse cuando cambien los límites del software;
  • * proporcionar a los usuarios información en diversas formas;
  • * garantizar simplicidad y comodidad para que los usuarios externos accedan a la información;
  • * proporcionar la capacidad de atender simultáneamente a una gran cantidad de usuarios externos.

El banco de datos consta de dos componentes principales: una base de datos y un sistema de gestión de bases de datos.

El núcleo de un banco de datos es una base de datos, que es una colección de datos interrelacionados almacenados juntos con una redundancia mínima para que puedan usarse de manera óptima para una o más aplicaciones. En este caso, los datos se almacenan de forma independiente de los programas que los utilizan; Se utiliza un método administrado común para agregar nuevos datos o transformar datos existentes y para buscar datos en la base de datos.

Los siguientes requisitos se aplican a la organización de bases de datos:

  • 1) desarrollo fácil, rápido y económico de aplicaciones de bases de datos;
  • 2) la posibilidad de uso repetido de datos;
  • 3) preservación de los costos del trabajo mental, expresado en la existencia de un programa y estructuras lógicas de datos que no se modifican cuando se realizan cambios en la base de datos;
  • 4) simplicidad;
  • 5) facilidad de uso;
  • 6) flexibilidad de uso;
  • 7) alta velocidad de procesamiento de solicitudes de datos no planificadas;
  • 8) facilidad para realizar cambios;
  • 9) bajos costos; bajo costo de almacenamiento y uso de datos y minimización del costo de realizar cambios;
  • 10) baja redundancia de datos;
  • 11) productividad;
  • 12) confiabilidad de los datos y cumplimiento del mismo nivel de actualización; es necesario ejercer control sobre la fiabilidad de los datos; el sistema evita que diferentes versiones de los mismos elementos de datos estén disponibles para los usuarios en diferentes etapas de actualización;
  • 13) secreto; el acceso no autorizado a los datos es imposible; restringir el acceso a los mismos datos para diferentes tipos de uso se puede hacer de diferentes maneras;
  • 14) protección contra la distorsión y la destrucción; los datos deben protegerse de fallos;
  • 15) preparación; el usuario recibe rápidamente datos cuando los necesita.

En el proceso de creación y operación de un banco de datos participan usuarios de diferentes categorías, siendo la categoría principal los usuarios finales, es decir, aquellos para cuyas necesidades se crea el banco de datos.

Según el tipo de información almacenada, las bases de datos se dividen en

  • · documental,
  • · factual y
  • · lexicográfico.

Entre documental Las bases de datos se dividen en bibliográficas, abstractas y de texto completo.

A lexicográfico Las bases de datos incluyen varios diccionarios (clasificadores, diccionarios multilingües, diccionarios de palabras básicas, etc.).

en sistemas factual tipo, la base de datos almacena información sobre los objetos del área temática que son de interés para el usuario en forma de "hechos" (por ejemplo, información biográfica sobre los empleados, datos sobre el lanzamiento de productos por parte de los fabricantes, etc.); en respuesta a la solicitud del usuario, se proporciona la información requerida sobre el objeto (objetos) de su interés o se envía un mensaje de que la información requerida no se encuentra en la base de datos.

EN documental La unidad de almacenamiento de la base de datos es un documento (por ejemplo, el texto de una ley o artículo), y el usuario, en respuesta a su solicitud, recibe un enlace al documento o al documento en sí, en el que puede encontrar la información. el esta interesado.

DB documental Los tipos se pueden organizar de diferentes formas: sin almacenamiento y con almacenamiento del propio documento original en un soporte informático. Los sistemas del primer tipo incluyen bases de datos bibliográficas y de resúmenes, así como bases de datos indexadas que hacen referencia a la fuente de información. Los sistemas que proporcionan almacenamiento del texto completo de un documento se denominan texto completo.

en sistemas documental tipo, el propósito de la búsqueda puede ser no solo cierta información almacenada en los documentos, sino también los propios documentos. Por lo tanto, son posibles consultas como "cuántos documentos se crearon durante un cierto período de tiempo", etc. A menudo, los criterios de búsqueda incluyen "fecha de aceptación del documento", "aceptado por quién" y otros "datos de salida" de los documentos. como características.

Un tipo específico de base de datos es una base de datos de formularios de documentos. Tienen algunas características de los sistemas documentales (se busca un documento, no información sobre un objeto específico; la forma del documento tiene un nombre, que generalmente se usa para buscarlo) y características específicas (se busca un documento, no con el fin de extraer información de él, sino con el fin de utilizarlo como plantilla).

En los últimos años ha estado desarrollando activamente orientado a objetos enfoque para la creación de sistemas de información. Las bases de datos de objetos están organizadas como objetos y referencias a objetos. Un objeto representa datos y las reglas según las cuales se realizan las operaciones con estos datos. Un objeto incluye un método, que es parte de la definición del objeto y se almacena con el objeto. En las bases de datos de objetos, los datos se almacenan como objetos clasificados en tipos de clases y organizados en una familia jerárquica de clases. Una clase es una colección de objetos con las mismas propiedades. Los objetos pertenecen a una clase. Las clases están organizadas en una jerarquía.

Según la naturaleza de la organización del almacenamiento de datos y el acceso a ellos, se distinguen

  • · local (personal),
  • general (integrado, centralizado) y
  • bases de datos distribuidas

Base de datos personal - es una base de datos destinada al uso local de un solo usuario. Cada usuario puede crear bases de datos locales de forma independiente o pueden recuperarse de una base de datos común.

Integrado y distribuido Las bases de datos implican la posibilidad de acceso simultáneo de varios usuarios a la misma información (modo de acceso multiusuario, paralelo). Esto introduce problemas específicos durante su diseño y durante el funcionamiento de BnD. Repartido Las bases de datos, además, tienen rasgos característicos relacionados con el hecho de que físicamente diferentes partes de la base de datos pueden ubicarse en diferentes computadoras, pero lógicamente, desde el punto de vista del usuario, deben representar un todo único.

Las bases de datos se clasifican por volumen. Un lugar especial aquí lo ocupan las llamadas bases de datos muy grandes. Esto se debe al hecho de que para las grandes bases de datos las cuestiones de garantizar la eficiencia del almacenamiento de información y garantizar su procesamiento se plantean de manera diferente.

Por naturaleza de la organización de datos Las bases de datos se pueden dividir en

  • · no estructurado,
  • · parcialmente estructurado y
  • · estructurado.

Esta característica de clasificación se refiere a información presentada en forma simbólica. Las bases de datos no estructuradas pueden incluir bases de datos organizadas en forma de redes semánticas. Las bases de datos de texto plano o los sistemas de hipertexto pueden considerarse parcialmente estructurados. Las bases de datos estructuradas requieren un diseño preliminar y una descripción de la estructura de la base de datos. Sólo entonces se podrán poblar con datos las bases de datos de este tipo.

Las bases de datos estructuradas, a su vez, tipo de modelo utilizado se dividen en

  • · jerárquico,
  • · red,
  • · relacional,
  • · mixto y
  • · multimodelo.

La clasificación por tipo de modelo se aplica no sólo a las bases de datos, sino también a los DBMS.

Jerárquico, de red, relacional.

En un modelo jerárquico, las relaciones entre datos se pueden describir mediante un gráfico (o árbol) ordenado. En la figura se muestra una representación simplificada de las relaciones entre datos en un modelo jerárquico.

Para describir la estructura (esquema) de una base de datos jerárquica en un determinado lenguaje de programación, se utiliza una estructura de árbol, cuyos nodos contienen objetos con el tipo de datos "nodo". El objeto de nodo es similar a los tipos de datos estructurales del lenguaje de programación C y a los tipos de datos de registro del lenguaje de programación Pascal. Permiten anidar tipos, cada uno de los cuales se encuentra en un nivel determinado. El tipo de nodo es compuesto. Incluye referencias a subobjetos ("subárboles"), cada uno de los cuales es a su vez un tipo "nodo" con otros objetos anidados. Cada "árbol" consta de un objeto "raíz" (nodo) y un conjunto ordenado de nodos subordinados (posiblemente vacíos). Cada uno de los nodos elementales incluidos en el “árbol” lleva información simple o compuesta contenida en el objeto adjunto. Un "nodo" simple transporta en la red un objeto de un tipo, por ejemplo, numérico, y uno compuesto combina un determinado conjunto de tipos, por ejemplo, un número entero, una cadena de caracteres y un puntero (enlace). En la figura se muestra un ejemplo de un "árbol" como una colección de nodos.

Un nodo raíz es un nodo que tiene nodos subordinados y no es en sí mismo un subnodo. Un nodo esclavo (subnodo) es hijo del nodo que actúa como su antecesor (padre). Los descendientes del mismo nodo son gemelos entre sí. En general, un "árbol" es un conjunto de tipos de "nodos" organizados jerárquicamente. Una base de datos jerárquica es una colección ordenada de árboles que contienen instancias de tipos de nodos (registros). A menudo, las relaciones entre tipos se extienden a las relaciones entre los propios registros. Los campos de registro almacenan los valores numéricos o simbólicos reales que conforman el contenido principal de la base de datos. Generalmente, recorrer todos los elementos de una base de datos jerárquica se realiza de arriba a abajo y de izquierda a derecha.

El modelo de datos de red le permite mostrar varias relaciones de elementos de datos en forma de un gráfico arbitrario, generalizando así el modelo de datos jerárquico.

Para describir el esquema de la base de datos de red, se utilizan dos grupos de tipos: "registro" y "comunicación". El tipo "relación" se define para dos tipos de "registro": antepasado y descendiente. Las variables del tipo "relación" son instancias de relaciones.

Una base de datos de red consta de un conjunto de registros y un conjunto de relaciones correspondientes. No se imponen restricciones especiales a la formación de una conexión. Si en estructuras jerárquicas un registro de descendientes podría tener solo un registro de antepasados, entonces en un modelo de datos de red un registro de descendientes puede tener un número arbitrario de registros de antepasados ​​(padrastros). En la figura se muestra un ejemplo de un diagrama de base de datos de red simple. El significado de las conexiones se indica aquí mediante inscripciones en las líneas que conectan los tipos de registros. Los diferentes DBMS de tipo red suelen utilizar términos diferentes para denotar conceptos esencialmente idénticos. Por ejemplo, como elementos y agregados de datos, registros, conjuntos, áreas, etc. La ubicación física de los datos en bases de datos de tipo red se puede organizar utilizando casi los mismos métodos que en las bases de datos jerárquicas.

El modelo de datos relacionales fue propuesto por Udgar Codd, empleado de IBM, y se basa en el concepto de relación.

Una relación es un conjunto de elementos llamados tuplas. Una forma visual de representar una relación es una tabla bidimensional familiar para la percepción humana.

Una tabla tiene filas (registros) y columnas (columnas). Cada fila de la tabla tiene la misma estructura y consta de campos. Las filas de la tabla corresponden a tuplas y las columnas corresponden a atributos relacionales.

Usando una tabla, es conveniente describir el tipo más simple de relaciones entre datos, es decir, la división de un objeto (fenómeno, entidad, sistema, etc.), cuya información se almacena en la tabla, en muchos subobjetos, cada uno de los cuales Corresponde a un registro de fila o tabla. Además, cada uno de los subobjetos tiene la misma estructura o propiedades, descritas por los valores correspondientes de los campos de registro. Por ejemplo, una tabla puede contener información sobre un grupo de estudiantes, de cada uno de los cuales se conocen las siguientes características: apellido, nombre y patronímico, sexo, edad y educación. Dado que no es posible describir estructuras de datos lógicas más complejas del área temática dentro de una sola tabla, se utiliza la vinculación de tablas.

La colocación física de datos en bases de datos relacionales en medios externos se realiza fácilmente utilizando archivos normales.

  • Traducción

Ekaterina Malakhova, editora independiente, adaptó un artículo de Beau Carnes sobre los principales tipos de estructuras de datos especialmente para el blog Netology.

“Los malos programadores piensan en el código. Los buenos programadores piensan en las estructuras de datos y sus relaciones." - Linus Torvalds, creador de Linux.

Las estructuras de datos juegan un papel importante en el proceso de desarrollo de software y también son preguntas frecuentes en las entrevistas con desarrolladores. La buena noticia es que son esencialmente formatos especiales para organizar y almacenar datos.

En este artículo, te mostraré las 10 estructuras de datos más comunes. Para cada uno de ellos se proporcionan vídeos y ejemplos de su implementación en JavaScript. Para ayudarte a practicar, también he incluido algunos ejercicios de la versión beta del nuevo plan de estudios de freeCodeCamp.

En el artículo, proporciono ejemplos de implementación de estas estructuras de datos en JavaScript. También serán útiles si utiliza un lenguaje de bajo nivel como C. Muchos lenguajes de alto nivel, incluido JavaScript, ya tienen implementaciones integradas de la mayoría de ellos; las estructuras de datos que discutiremos. Sin embargo, dicho conocimiento será una gran ventaja en su búsqueda de empleo y le resultará útil a la hora de escribir código de alto rendimiento.

Listas enlazadas

Una lista enlazada es una de las estructuras de datos básicas. A menudo se compara con una matriz, ya que se pueden implementar muchas otras estructuras utilizando una matriz o una lista vinculada. Estos dos tipos tienen ventajas y desventajas.

Así funciona una lista enlazada

Una lista enlazada consta de un grupo de nodos que juntos forman una secuencia. Cada nodo contiene dos cosas: los datos reales que almacena (pueden ser cualquier tipo de datos) y un puntero (o enlace) al siguiente nodo de la secuencia. También existen listas doblemente enlazadas: en ellas, cada nodo tiene un puntero al elemento anterior y siguiente de la lista.

Las operaciones básicas en una lista vinculada incluyen agregar, eliminar y buscar un elemento en la lista.

Complejidad temporal de una lista enlazada ═════════ ╗ ║ Algoritmo ║Promedio ║ Peor caso ║ ╠═══════════╬══════ ═══════ ════ ╬═════════ ══════╣ ║ Espacio ║ O(n) ║ O(n) ║ ║ Buscar ║ O(n) ║ O(n) ║ ║ Insertar ║ O (1) ║ O (1) ║ ║ Eliminar ║ O (1) ║ O (1) ║ ╚═══════════╩══════════════ ╚═══════════╩══════════════ ═══╩════ ══════ ═════╝

Ejercicios de freeCodeCamp

pilas

Una pila es una estructura de datos básica que permite agregar o eliminar elementos solo al principio. Es como una pila de libros: si quieres mirar el libro que está en el medio de la pila, primero tienes que quitar los que están encima.

La pila está organizada según el principio LIFO (Last In First Out). Esto significa que el último elemento que agregues a la pila será el primero en salir de ella.


Así funciona la pila

Las pilas pueden realizar tres operaciones: agregar un elemento (empujar), eliminar un elemento (pop) y mostrar el contenido de la pila (pip).

Complejidad del tiempo de pila ════════╗ ║ Algoritmo ║Valor promedio ║ Peor caso ║ ╠═══════════╬════════ ════════ ═ ╬══════════ ═════╣ ║ Espacio ║ O(n) ║ O(n) ║ ║ Buscar ║ O(n) ║ O(n) ║ ║ Insertar ║ O(1 ) ║ O(1) ║ ║ Eliminar ║ O( 1) ║ O(1) ║ ╚═══════════╩══════════════ ═══ ╩════ ═══════ ════╝

Ejercicios de freeCodeCamp

Colas

Esta estructura se puede considerar como una fila en una tienda de comestibles. El que llegó desde el principio es servido primero, como en la vida.


Así funciona la cola

La cola se organiza según el principio FIFO (primero en entrar, primero en salir). Esto significa que puede eliminar un elemento solo después de que se hayan eliminado todos los elementos agregados anteriormente.

Una cola le permite realizar dos operaciones básicas: agregar elementos al final de la cola ( poner en cola) y eliminar el primer elemento ( sacar de cola).

Complejidad del tiempo de cola ════════╗ ║ Algoritmo ║Valor promedio ║ Peor caso ║ ╠═══════════╬════════ ════════ ═ ╬══════════ ═════╣ ║ Espacio ║ O(n) ║ O(n) ║ ║ Buscar ║ O(n) ║ O(n) ║ ║ Insertar ║ O(1 ) ║ O(1) ║ ║ Eliminar ║ O( 1) ║ O(1) ║ ╚═══════════╩══════════════ ═══ ╩════ ═══════ ════╝

Ejercicios de freeCodeCamp

Conjuntos



Así es como se ven muchas cosas.

Un conjunto almacena valores de datos sin ningún orden en particular sin repetirlos. No sólo le permite agregar y eliminar elementos, sino que también hay otras funciones importantes que se pueden aplicar a dos conjuntos a la vez.

  • Una unión combina todos los elementos de dos conjuntos diferentes en uno (sin duplicados).
  • La intersección analiza dos conjuntos y crea otro a partir de aquellos elementos que están presentes en ambos conjuntos originales.
  • Diferencia muestra una lista de elementos que están en un conjunto pero no en otro.
  • Subconjunto produce un valor booleano que indica si un conjunto incluye todos los elementos de otro conjunto.
Implementación de ejemplo en JavaScript

Ejercicios de freeCodeCamp

Mapa

Un mapa es una estructura que almacena datos en pares clave/valor, donde cada clave es única. A veces también se le llama matriz o diccionario asociativo. El mapa se utiliza a menudo para encontrar datos rápidamente. Le permite hacer las siguientes cosas:
  • agregar pares a la colección;
  • eliminar pares de la colección;
  • cambiar un par existente;
  • busque un valor asociado con una clave específica.

Así funciona la estructura del mapa

Ejercicios de freeCodeCamp

tablas hash

Así funcionan una tabla hash y una función hash

Una tabla hash es una estructura similar a un mapa que contiene pares clave/valor. Utiliza una función hash para calcular un índice en una matriz de bloques de datos para encontrar el valor deseado.

Normalmente, una función hash toma una cadena de caracteres como entrada y genera un valor numérico. Para la misma entrada, la función hash debería devolver el mismo número. Si dos entradas diferentes se combinan para obtener el mismo resultado, se produce una colisión. El objetivo es tener el menor número posible de casos de este tipo.

Entonces, cuando ingresa un par clave/valor en una tabla hash, la clave pasa a través de la función hash y se convierte en un número. Luego, este número se utiliza como la clave real que corresponde a un valor específico. Cuando ingrese la misma clave nuevamente, la función hash la procesará y devolverá el mismo resultado numérico. Este resultado luego se utilizará para encontrar el valor asociado. Este enfoque reduce significativamente el tiempo medio de búsqueda.

Complejidad temporal de una tabla hash ═════════ ═╗ ║ Algoritmo ║Promedio ║ Peor caso ║ ╠═══════════╬═════ ═══════ ════ ═╬════════ ═══════╣ ║ Espacio ║ O(n) ║ O(n) ║ ║ Buscar ║ O(1) ║ O(n) ║ Insertar ║ O(1) ║ O(n) ║ ║ Eliminar ║ O(1) ║ O(n) ║ ╚═══════════╩════════════ ═ ════╩════ ═════ ══════╝

Ejercicios de freeCodeCamp

Árbol de búsqueda binaria


Árbol de búsqueda binaria

Un árbol es una estructura de datos que consta de nodos. Tiene las siguientes propiedades:

  • Cada árbol tiene un nodo raíz (arriba).
  • Un nodo raíz tiene cero o más nodos secundarios.
  • Cada nodo hijo tiene cero o más nodos hijos, y así sucesivamente.
Un árbol de búsqueda binario tiene dos propiedades adicionales:
  • Cada nodo tiene hasta dos nodos hijos (descendientes).
  • Cada nodo es más pequeño que sus hijos de la derecha y sus hijos de la izquierda son más pequeños que él mismo.
Los árboles de búsqueda binaria le permiten buscar, agregar y eliminar elementos rápidamente. Están diseñados para que el tiempo de cada operación sea proporcional al logaritmo del número total de elementos del árbol.

Complejidad temporal de un árbol de búsqueda binario ════════ ╗ ║ Algoritmo ║Valor promedio ║Peor ​​caso ║ ╠═══════════╬══════ ══════ ═════ ╬═════════ ═════╣ ║ Space ║ O (N) ║ O (N) ║ ║ Search ║ O (log n) ║ o (n) ║ ║ inserción ║ O(log n) ║ O(n) ║ ║ Eliminar ║ O(log n) ║ O(n) ║ ╚═══════════╩═══════════ ══════╩════ ════ ══════╝


Ejercicios de freeCodeCamp

Árbol de prefijos

Un árbol de prefijos (cargado) es un tipo de árbol de búsqueda. Almacena datos en etiquetas, cada una de las cuales representa un nodo en el árbol. Estas estructuras se utilizan a menudo para almacenar palabras y realizar búsquedas rápidas sobre ellas, por ejemplo, para la función de autocompletar.

Así funciona el árbol de prefijos

Cada nodo del árbol de prefijos de idioma contiene una letra de la palabra. Para formar una palabra, debes seguir las ramas del árbol, pasando una letra a la vez. El árbol comienza a ramificarse cuando el orden de las letras difiere del de otras palabras que contiene o cuando la palabra termina. Cada nodo contiene una letra (dato) y un valor booleano que indica si es el último de la palabra.

Mira la ilustración e intenta formar las palabras. Comience siempre con el nodo raíz en la parte superior y avance hacia abajo. Este árbol contiene las siguientes palabras: pelota, murciélago, muñeca, hacer, idiota, dormitorio, enviar, sentir.

Ejercicios de freeCodeCamp

montón binario

El montón binario es otra estructura de datos basada en árboles. Cada nodo que contiene no tiene más de dos hijos. También es un árbol perfecto: esto significa que todos los niveles que contiene están completamente llenos de datos y el último se llena de izquierda a derecha.


Así funcionan los montones mínimo y máximo

Un montón binario puede ser mínimo o máximo. En un montón máximo, la clave de cualquier nodo es siempre mayor o igual que las claves de sus descendientes. En un montón mínimo, todo funciona al revés: la clave de cualquier nodo es menor o igual que las claves de sus descendientes.

El orden de los niveles en un montón binario es importante, a diferencia del orden de los nodos dentro del mismo nivel. La ilustración muestra que en el montón mínimo del tercer nivel los valores están desordenados: 10, 6 y 12.


Complejidad temporal del montón binario ═════════ ═╗ ║ Algoritmo ║ Promedio ║ Peor caso ║ ╠═══════════╬══════ ═══════ ═══ ══╬═══════ ════════╣ ║ Espacio ║ O(n) ║ O(n) ║ ║ Buscar ║ O(n) ║ O(n) ║ Insertar ║ O(1) ║ O(log n) ║ ║ Eliminar ║ O(log n) ║ O(log n) ║ ║ Peek ║ O(1) ║ O(1) ║ ╚═════════ ══╩══════════ ════════╩═══════════════╝

Ejercicios de freeCodeCamp

Gráfico

Los gráficos son colecciones de nodos (vértices) y conexiones entre ellos (aristas). También se les llama redes.

Los grafos se dividen en dos tipos principales: dirigidos y no dirigidos. En los gráficos no dirigidos, los bordes entre los nodos no tienen ninguna dirección, mientras que los bordes en los gráficos dirigidos sí la tienen.

Muy a menudo, un gráfico se representa en una de dos formas: puede ser una lista de adyacencia o una matriz de adyacencia.


Graficar como matriz de adyacencia

Se puede considerar una lista de adyacencia como una lista de elementos, con un nodo a la izquierda y todos los demás nodos a los que se conecta a la derecha.

Una matriz de adyacencia es una cuadrícula de números donde cada fila o columna corresponde a un nodo diferente en el gráfico. En la intersección de la fila y la columna hay un número que indica la presencia de una conexión. Los ceros significan que falta; unidades - que hay una conexión. Para indicar el peso de cada conexión se utilizan números mayores que uno.

Existen algoritmos especiales para visualizar aristas y vértices en gráficos: los llamados algoritmos transversales. Sus tipos principales incluyen la búsqueda en amplitud ( búsqueda en amplitud) y en profundidad ( búsqueda en profundidad). Alternativamente, se pueden utilizar para determinar qué tan cerca están ciertos vértices del gráfico del nodo raíz. El siguiente vídeo muestra cómo realizar una búsqueda amplia en JavaScript.

Clasificaciones de estructuras de datos.

Los datos en la memoria de la computadora se representan como una secuencia de bits. Las secuencias de bits no están bien estructuradas, lo que dificulta su utilización en la práctica. Por tanto, en la práctica se utilizan estructuras de datos.

Definición 1

Estructura Los datos son un conjunto de elementos de datos y relaciones internas entre ellos.

Hay simple Y integrado estructuras de datos. Las estructuras de datos simples se reducen a bits y se organizan directamente a partir de bits. Las estructuras simples incluyen:

  • numérico;
  • poco;
  • simbólico;
  • lógico;
  • punteros.

Las estructuras de datos integradas se organizan a partir de estructuras simples y otras estructuras integradas.

Es necesario distinguir físico Y lógico estructura de datos. Cuando hablamos de la estructura física de los tipos simples, nos referimos a su tamaño y a la forma en que se organizan los bits en la memoria. Desde el punto de vista de la estructura lógica, un tipo simple es una unidad elemental indivisible.

Definición 2

Variabilidad Se llama estructura a un cambio en el número de elementos y conexiones entre ellos.

De acuerdo con el signo de variabilidad, las estructuras se dividen en

  • Estático (vecotr, matriz, conjunto, registro, tabla);
  • Dinámico (pila, cola, cadena, listas enlazadas lineales, listas enlazadas ramificadas, gráficos, árboles).

Los elementos de una estructura pueden estar ordenados o desordenados. De acuerdo con esta característica, las estructuras se dividen en

  • No lineal(lista multienlazada, gráfico, árbol);
  • Lineal con distribución secuencial (vector, cadena, matriz, pila, cola);
  • Lineal con distribución arbitraria conexa (listas simplemente conexas y doblemente enlazadas).

Estructuras simples y tipos de datos.

Las estructuras de datos simples también se denominan primitivas o estructuras básicas. En los lenguajes de programación, las estructuras de datos simples se representan mediante tipos de datos simples. Los diferentes lenguajes de programación tienen tipos de datos ligeramente diferentes, pero existen algunos principios comunes.

tipo entero Se utiliza para representar el número de objetos discretos. Los números enteros pueden ser negativos o sin signo. La representación interna de un número entero puede ser de 1, 2 o 4 bytes.

Los números reales se representan como formato de punto flotante. Un número de coma flotante se representa mediante dos números enteros, exponente y Matisse, y signo.

En el caso del sistema numérico binario B=2.

tipo decimal No todos los lenguajes de programación son compatibles. Un número de este tipo se representa como m dígitos decimales, de los cuales d dígitos están a la derecha del punto decimal.

Para los casos en los que necesite trabajar con dígitos binarios individuales de un número, se proporciona tipo de datos de bits. Los datos que contiene están representados por un conjunto de bits combinados en bytes o palabras. Todas las operaciones con un tipo de bit implican acceder a cada bit individualmente.

Variable tipo booleano Puede tomar uno de dos valores: verdadero o falso. Para almacenar una variable booleana, se necesita un byte de memoria. En este caso, el valor "falso" se codifica con un valor de byte cero y el valor "verdadero" se codifica con cualquier valor distinto de cero.

Tipo de personaje le permite representar datos como una secuencia de símbolos de algún conjunto predeterminado. Cada símbolo del conjunto se almacena en la memoria como una secuencia de bits. La correspondencia entre caracteres y dichas secuencias se denomina codificación. Las diferentes codificaciones representan caracteres como secuencias de bits de diferentes longitudes.

Puntero es una variable cuyo valor es la dirección de una celda de memoria. Así, el puntero se refiere a un determinado bloque de datos, indicando su primera celda.

Ejemplos de estructuras estáticas

Para hacer referencia a un elemento, debe utilizar el nombre de la matriz y el índice del elemento. En la memoria, las matrices se encuentran en celdas ubicadas una tras otra.

Ejemplo 1

Se nos dará una matriz llamada A.

Entonces el elemento A es igual a 30.

Ejemplo 2

Matriz bidimensional es una matriz, cada elemento del cual es en sí mismo una matriz unidimensional.

En una matriz bidimensional, cada elemento tiene dos índices.

Definición 4

Los registros (matrices hash, matrices asociativas) son matrices que no están indexadas por números naturales, sino por cadenas.

El índice de un elemento en dicha matriz se llama clave. Para hacer referencia a un elemento, se utilizan el nombre de la matriz y el índice.

Ejemplo 3

Sea una matriz hash llamada B.

Entonces el elemento de la matriz B ['vegetal'] es igual a 'pepino'.

Ejemplos de estructuras dinámicas

Para estructuras dinámicas, la memoria se asigna sobre la marcha durante la ejecución del programa. Los punteros se utilizan ampliamente en varios lenguajes de programación para trabajar con tipos de datos dinámicos. Los propios punteros son de tipo estático.

Pila es un vector en el que cada elemento subsiguiente es direccionado por un puntero al elemento actual. Las figuras muestran la adición secuencial de elementos a la pila y la eliminación secuencial.

Para extraer un elemento, primero debe extraer secuencialmente todos los elementos agregados después de él. El elemento agregado primero solo se puede eliminar al final.

Cola también una estructura dinámica, que se diferencia de la pila por la presencia de dos punteros: al primer y al último elemento de la cola. Los nuevos elementos se escriben después del último elemento escrito. Y la selección de elementos empieza desde el primero. Con este algoritmo, puede obtener el primer elemento que se agregó primero.

| Comprensión de las bases de datos

Lecciones 35 - 37
Comprensión de las bases de datos

Después de estudiar este tema, aprenderá:

¿Por qué el concepto de “área temática” juega un papel importante en la creación de bases de datos?
- ¿Por qué es necesario participar en la estructuración de datos?
- por qué una tabla es la forma preferida de presentación de datos;
- cuáles son los conceptos básicos de una base de datos.

El papel del sistema de información.

Durante muchas generaciones, la gente ha utilizado diversas formas de almacenar y transmitir información. Al principio, la información se transmitía de generación en generación en forma de leyendas e historias orales. El surgimiento y desarrollo de la imprenta hizo posible transmitir y almacenar información a través de los libros. Los descubrimientos en el campo de la electricidad llevaron a la aparición del telégrafo, el teléfono, la radio y la televisión, que permitieron transmitir y acumular información rápidamente.

El desarrollo del progreso condujo a un fuerte aumento en el flujo de información y la cuestión de su conservación y procesamiento se agudizó cada vez más. Se ha producido una situación paradójica: el hambre de información está aumentando, provocada no por la falta de información, sino por su exceso. Cada vez es más difícil encontrar información que interese a un usuario concreto entre tanta información.

Con la llegada de la tecnología informática, el proceso de almacenamiento y, lo más importante, el procesamiento de información se ha simplificado enormemente. El desarrollo de la tecnología informática basada en microprocesadores conduce a la mejora de las computadoras y el software. Están apareciendo programas que pueden procesar grandes flujos de información. Con la ayuda de dichos programas, se crean sistemas de información.

El propósito de cualquier sistema de información es procesar datos sobre objetos del mundo real y proporcionar la información sobre ellos que una persona necesita. Si consideramos una colección de algunos objetos, podemos identificar objetos que tienen las mismas propiedades. Estos objetos se pueden combinar en clases separadas (peces, muebles, estudiantes, etc.). Dentro de una clase seleccionada, los objetos pueden ordenarse según ciertas características, por ejemplo, alfabéticamente, o seleccionarse según algunas características generales, por ejemplo, por color o material.

El muestreo (agrupación) según determinadas características facilita enormemente la búsqueda y selección de la información necesaria.

Por ejemplo, desea comprar un escritorio para computadora de madera de nogal. Para hacer esto, necesita información sobre dónde se venden dichas mesas. Puedes conseguirlo de varias formas, por ejemplo:

♦ recorre todas las tiendas de muebles de la ciudad y encuentra la mesa que necesitas;
♦ estudiar catálogos de muebles y listas de precios de tiendas de muebles;
♦ contactar al sistema de información con la solicitud necesaria.

Es obvio que primera manera puede conducir a un resultado positivo, pero esto requerirá mucho esfuerzo y tiempo.

Segunda manera Más optimista, ya que en este caso no es necesario ir a ningún lado, basta con utilizar el teléfono y llamar a tiendas que vendan muebles similares. El último método consiste en acceder al sistema de información, donde en la sección Mobiliario debe seleccionar - Mesas, entre las mesas seleccionar Computadora, luego - Madera, luego considerar Mesas de nogal y conectarse automáticamente por teléfono a la tienda correspondiente y dirigirse a la especificada. dirección para realizar una compra. En nuestra situación, el tercer método es probablemente el más racional. 

¿Cómo se organiza dicho sistema de información y cómo se puede organizar el almacenamiento y presentación de la información en él?

Un sistema de información, en primer lugar, debe trabajar con datos de un área temática específica, para lo cual debe existir una descripción en forma de modelo de información. El área temática puede ser un ámbito de actividad humana: una empresa, una escuela, una clínica, etc. También puede ser un área del conocimiento humano: biología, geografía, etc.

El área temática está formada por un conjunto de objetos que se encuentran en determinadas relaciones y conexiones entre sí.

Si consideramos el área temática de la Escuela como ejemplo, entonces en esta área podemos distinguir las siguientes clases de objetos: estudiantes, profesores, personal de servicio, materias educativas, locales, etc. Existen ciertas relaciones y conexiones entre estos objetos.

Veamos otro ejemplo. En el área temática del Policlínico se pueden distinguir las siguientes clases de objetos: médicos, pacientes, diagnósticos, especialidades médicas, etc. Las conexiones entre los objetos del área temática seleccionada se muestran en la Fig. 4.1.

Arroz. 4.1. Un ejemplo de la relación entre clases de objetos en el dominio Policlínico.

Veamos otro ejemplo. A todos nos encantan las canciones y cada uno tiene sus propias canciones y artistas favoritos. Sería deseable poder acceder a un sistema de información que le permitiera almacenar, buscar y seleccionar sus canciones favoritas. Es obvio que dicho sistema de información debería incluir programas enfocados a trabajar con las clases de objetos Canción e Intérprete.

Surge la pregunta: ¿cómo se debe presentar la información sobre estos objetos?

Se podría dar la siguiente descripción: la canción “Spice up your life” interpretada por el grupo inglés “Spice Girls”, escrita en estilo “Hip-hop” en 1997, o, por ejemplo, la canción de 1996 del grupo ruso. “Ivanushki International” se llama "Nubes" al estilo de "Ror".

En esta descripción se registran conjuntamente el nombre de un determinado parámetro y su valor, por ejemplo: canción (nombre del parámetro) “Clouds” (valor del parámetro). En este caso, los valores de los parámetros son datos y el nombre del parámetro es una característica semántica de estos datos. Cualquier clase de objetos se puede describir utilizando un modelo de información. Para hacer esto, es necesario determinar qué parámetros deben caracterizar los objetos de esta clase. Por ejemplo, dichos parámetros podrían ser: nombre de la canción, artista, estilo, fecha de creación, país. La lista de estos parámetros debe estar determinada por el objetivo, es decir, indicar cuál es tu interés en la canción y su artista.

Esta información se puede presentar de diferentes formas, por ejemplo en forma de lista:

1. “Dale sabor a tu vida”, “Spice Girls”, Hip-hop, 1997, Inglaterra;
2. “Nubes”, “Ivanushki International”, Pop, 1996, Rusia;
3. “El Marinero”, “Agatha Christie”, Rock, 1997, Rusia.

Es muy difícil trabajar con información registrada en este formulario. En primer lugar, aquí sólo se indican datos y no se describe el significado de estos datos. No todo el mundo puede entender lo que significan estos datos. En segundo lugar, incluso si el significado de los datos es claro, para encontrar la canción deseada en una lista larga, debemos revisar cuidadosamente cada línea hasta llegar a la correcta. Hacer cualquier selección, por ejemplo seleccionar canciones con el mismo estilo, es aún más difícil.
Otra forma muy común y natural de presentar datos es una tabla. Ya nos hemos referido más de una vez a esta forma de presentación de datos. La información de cada canción se puede presentar en forma de tabla (ver Tabla 4.1). 
Veamos la estructura de la tabla que creamos. La tabla completa representa la clase de objeto Song. Cada columna de la tabla refleja datos de una característica. La primera línea contiene los encabezados de las columnas correspondientes a los nombres de los parámetros. La primera fila de la tabla corresponde al modelo de información del objeto Song.

Tabla 4.1. Información de la canción


Por lo tanto, hemos pasado a una forma estructurada de presentación de datos en la que los datos y su interpretación semántica se separan entre sí y se presentan de alguna forma. Este proceso se llama "estructuración de datos".

La estructuración de datos es un proceso que conduce a una determinada forma de registrar datos sobre objetos de una clase.

Al considerar las propiedades de un objeto y crear un modelo de información en forma de tabla, obtenemos una forma más visual y conveniente de registrar información. Ahora puedes pensar en qué acciones se pueden realizar en este objeto. Se ha vuelto más conveniente describir cualquier canción, ya que se han definido los parámetros que la caracterizan y no es necesario distraerse con otras propiedades del objeto. La búsqueda y selección de información se ha vuelto mucho más sencilla. Por ejemplo, para buscar y seleccionar canciones de un solo artista, solo miramos la columna Artista.

Conceptos básicos de bases de datos

La base de cualquier sistema de información es una base de datos que almacena información sobre una gran cantidad de instancias de clases de objetos interrelacionadas. Se entiende por base de datos una colección de datos especialmente organizados que se almacenan en algún medio tangible. Tenga en cuenta que esta no es una recopilación de datos aislados. Los datos deben estar estructurados e interconectados para que una persona pueda hacerse una idea sobre cualquier objeto, fenómeno o proceso.

Una base de datos es una colección con nombre de datos estructurados de un área temática determinada.

Los conceptos básicos de una base de datos son campo y registro.

Un campo es el objeto de base de datos más simple diseñado para almacenar los valores de un parámetro del objeto real que se describe.

Un campo se caracteriza por un nombre y un tipo de datos. En la base de datos mencionada anteriormente, los campos son Título de la canción, Artista, Estilo, Año y País. Los campos de la base de datos pueden tener diferentes tipos de datos: texto, numérico, fecha, hora, monetario, etc. en la tabla. 4.1, que proporciona información sobre las canciones, los nombres de los campos se enumeran en la primera fila y los valores de cada campo se enumeran en la columna correspondiente.

La base de datos contiene información sobre muchos parámetros de los objetos del dominio. Por lo tanto, es importante en qué secuencia se organizarán (registrarán) estos parámetros. Por ejemplo, es lógico presentar información sobre un estudiante en forma de registro, donde el orden de los parámetros será el siguiente: Apellido, Nombre, Patronímico, Fecha de Nacimiento, Calle, Casa, Apartamento. A modo de comparación, consideremos el desafortunado orden de disposición de los mismos parámetros: Nevsky pr., Tikhonov, 07/12/1989, no 15, Victor, apt. 48, Nikolaevich.

Por tanto, un paso importante en la creación de una base de datos es desarrollar la estructura de registros.

La estructura de un registro es un conjunto de campos lógicamente relacionados que caracterizan los parámetros de un objeto real.

Un registro es una colección de valores de parámetros para un objeto específico.

Si la información sobre un objeto se presenta en forma de tabla, entonces la primera fila de la tabla siempre contiene los nombres de los parámetros, es decir, determina la estructura del registro. Todas las demás líneas son registros.

Preguntas y tareas de prueba

1. ¿Cuál es el papel del sistema de información cuando se trabaja con información?

2. ¿Cuál es el propósito de crear un sistema de información?

3. ¿Qué es un área temática?

4. ¿Dar ejemplos cuando sea necesario seleccionar la información necesaria? ¿Cómo lo haces? ¿Es importante el concepto de “área temática”?

5. Dé ejemplos de diferentes áreas temáticas y resalte los objetos en ellos cuya información le interese. ¿Qué parámetros deberían caracterizar los objetos de esta clase?

6. ¿Qué es la estructuración de datos?

7. ¿Qué es una base de datos?

8. ¿Qué es un campo?

9. ¿Qué es la estructura de registros?

10. ¿Qué es un registro?

11. Presentar los parámetros de los objetos en un área temática específica en forma de tabla. Especifique los campos, registros y estructura de registros en la tabla.




Arriba