ABD - Modelo Entidad Relación

Tarea: Realizar los puntos 1, 2 y 3 con el ejercicio 6 descrito más abajo.

  1. Realizar el Modelo Entidad - Relación, Modelo Conceptual. - AR
  2. Grafo relacional - Restricciones del FK. - LN
    • DC | UC
    • DNA | UNA
    • DSN | USN
    • DSD | USD
  3. Planificación de capacidad de la Base de Datos actual y futura. - AR y LN
    • sql-server-2008-administration-instant-reference - Perform Capacity Planning (pag. 76 – 82). (Disk and the I/O subsystem, Memory, CPU, Network, Data Growth) En la planificación de crecimiento debemos escoger solo un tipo de crecimiento (lineal, compuesto a, compuesto b).
    • GESTION BD  -Para calcular el tamaño de la bd actual (pag. 31) y un ejemplo del grafo (pag. 30) buscar más referencias y/o formas de hacer el grafo.
Lo Verde significan las iniciales de los responsables de cada item.

Ejercicio 6. Biblioteca v2
  • Almacenaremos el DNI, nombre, apellidos, código de socio, dirección y teléfonos (pueden ser varios, pero al menos uno)
  • La biblioteca presta libros, CDs y películas. De todos ellos se almacena un código de artículo distinto para cada pieza en la biblioteca. Es decir si tenemos tres libros del Quijote, los tres tendrán un número distinto de artículo.
  • Además almacenamos el nombre de cada artículo, el año en el que se hizo la obra (sea del tipo que sea) un resumen de la obra y los datos de los autores del mismo. Se considera autor de la película al director, de la música al intérprete y del libro al escritor. Pero de todos ellos se guarda la misma información: nombre y país.
  • De los libros además se guarda el número de páginas, de los CDs el número de canciones y de la película la duración
  • Anotamos si un artículo concreto está deteriorado y un comentario sobre el posible deterioro
  • Cuando se presta un artículo, se anota fecha en la que se presta y la fecha tope para devolverle. Cuando el socio le devuelve, se anota la fecha de devolución.
  • No hay tope sobre el número de artículos que puede prestarse a un socio e incluso el socio podría llevarse varias veces el mismo artículo en distintos préstamos
Se trata de crear una base de datos sobre el funcionamiento de una biblioteca.
Solución

NOTA:
El ejercicio que se entregó en clase está en el siguiente documento (Descargar y abrirlo en Word + Google Cloud Connect).


Referencias MER: 
Página 9: http://dis.um.es/~jfernand/0708/fbd/tema3.pdf
Leer: http://www.slideshare.net/oswchavez/clase-3-modelo-entidad-relacion
Leer: http://gpd.sip.ucm.es/yolanda/BDSI0708/BDSI%201011/Tema%202II.pdf

Microsoft .NET - Tipos de datos - Casting - Estructuras

Declarar una variable se establece el tipo y el nombre.

Tipo de datos primitivos
son tipos de dato nativos.

Los dos son clases: string y String (es una clase que tiene métodos y propiedades sobre el valor que guarda esa variable.)

CASTEO

1. poner Convert al inicio de una sentencia.
2. poner al final del nombre de la clase "parse"
3. poner entre parentesis el tipo de dato antes de la variable.

CASTEO EXPLÍCITO:
Se está citándo cual se va a cambiar.

CASTEO IMPLÍSITO:
Se obvia el casteo. Entre datos que son compatibles.
Ej. Char a entero y visceversa.

ESTRUCTURA DE DATOS
Conjunto de datos relacionados.
Dentro del Bash Class Library

---
Agregar una nueva forma para agregar dos datos X, Y con un botón guardar en una estructura de datos POINT y un botòn desplegar en un richtextbox

Tipos de datos y Variables
Casting explícito e implícito
Estructuras de datos definidas por el usuario y predefinidas.

Todas las clases tienen el método toSting() y lo que hace es desplegar el nombre de la clase.
Con la sentencia override se sobreescribe el método.

public static Cycle operator +
operator + sobrecarga el operador, indica lo que va a hacer cuando

Estático un solo valor de memoria para esa variable, método o clase.
Si la clase es estática, no se va a poder instanciar nuevamente, siempre va a contener el mismo espacio de memoria para esa variable y puede ser accedida por cualquier clase.

Deber:
Tarea realizar el ejemplo de la página 8 del libro MCTS http://sdrv.ms/15wRdsc
No datos quemados sino desde el formulario

Proyecto:
http://sdrv.ms/15wR0VX
Leer:
http://goo.gl/0qAQ1

ABD - Consideraciones para la instalación de un DBMS

Establecer diferentes carpetas y lugares (discos duros) para guardar los logs, data y backups la base de datos. Esto permite determinar una buena gestión de respaldo y restauración de la base de datos.

Se debe considerar también lo siguiente:
LAS PEORES PRÁCTICAS DE UN DBA (Autores: Christian Ríos, María José Bravo)
Las peores prácticas más importantes que un DBA debe considerar son las siguientes:
1. Definición de desastre demasiado restrictivo y no practicar una recuperación de desastres.
2. Instalación de Service Pack, actualizaciones acumulativas o revisiones sin leer las notas de la versión y no instalarlos en un entorno de prueba en primer lugar.
3. Instalación de todas las características de SQL Server en la remota posibilidad de que puede ser necesario en algún momento en el futuro. Además, aumenta el área de superficie de ataque y los resultados en la gestión de servicios innecesarios que pueden reducir el rendimiento.
4. No tener en cuenta los acuerdos de nivel de servicio (SLA) en el diseño de un entorno de base de datos y no tener en cuenta la necesidad del tiempo de inactividad programado para varias actividades de mantenimiento, tales como la instalación de los Service Pack.
5. La falta de seguimiento de alineación de las particiones de disco y formatear los mismos con el tamaño predeterminado de la unidad de asignación (4K).
6. Virtualización/Consolidación de instancias de SQL Server y bases de datos sin tener en cuenta la escalabilidad, la concesión de licencias, soporte, administración, y las implicaciones de rendimiento de perfiles.
7. Crear logins/puestos de trabajo con privilegios elevados. Implementación de privilegios mínimos puede ser un trabajo duro, pero es esencial bloquear un sistema para máxima seguridad.  
8. Ubicación de datos y registros de transacciones en el mismo disco físico.
9. Almacenamiento de copias de seguridad en el mismo disco que los archivos de base de datos.
10. Instalación de grupos de instancias múltiples sin tener en cuenta las consecuencias financieras de las situaciones de conmutación por error.
11. No hacer copias de seguridad, no comprobar su validez, no practicar y documentar las diversas situaciones de recuperación.
12. Confiar en el crecimiento automático del tamaño de archivos, y dejar los temporales de la base de datos en su tamaño por defecto.
13. Realizar la administración manual con SQL Server Management Studio. Para una máxima eficiencia y un mínimo de errores, las tareas deben ser programadas y automáticas, y usted debe emplear un adecuado seguimiento y mecanismos de alerta, como MOM u operadores del Agente SQL y alertas.


Microsoft .NET - Componentes y propiedades mas usadas en C#

ComboBox - DropDownStyle > DropDownList (No se puede modificar el texto de los combos)

Panel - BorderStyle (Agregar un borde al panel para visualizarlo)

Form - MinSize (Tamaño mínimo para reducir el tamaño de la ventana)

Form - Paddin (Borde del Form)

Controladores - Anchor (Permite redistribuir los controladores respecto al contenedor principal. Cambia la relación de aspecto izquierdo, derecho, superior e inferior.)

NumericUpDown - Increment (Cada incremento de cuanto se va a hacer)

Que control se puede usar para distancias es decir con decimales y en qué evento se debe aplicar la validación para no ingresar letras.

http://sdrv.ms/14m2yK1

Microsoft .NET - Solución VS - Proyecto CS - Componentes CS

Componentes de una solución VS. 
Puede estar compuesta de diferentes proyectos con diferentes lenguajes. Cada uno sirve para diferentes fines!
Properties:
- Resource.resx: Recursos externos que puede utilizar la aplicación.
- AssemblyInfo.cs: Metadata de la aplicación.
- Settings.settings: Configuraciones que se pueden recuperar en la siguiente sesión.
Program.cs: Punto de entrada principal para la aplicación.
References: Librerías o namespaces que usa la aplicación.

El proyecto que se establece como proyecto de inicio se denota por la negrita que lo resalta.
Las dependencias de un proyecto se aplican cuando un proyecto está compuesto por n-capas
Ubicación de las librerías que se están usando para el código fuente.
En las propiedades de la configuración se puede cambiar las opciones de inicialización de un proyecto:
- Debug (Depuración): Permite parar, dar seguimiento, buscar errores de sintaxis, lógica, es decir permite probar la aplicación. Esta configuración es pesada.
- Release: Esta configuración no permite probar la aplicación o darle seguimiento, esta se la usa para ya generar una aplicación probada. Es mas liviana y rápida.
La plataforma permite configurar la compatibilidad de las arquitecturas.


Nombres que se manejan en VS.
Solución: Nombre de la solución o del conjunto de proyectos. "SoluciónGlobalAplicación"
Ensablado: Nombre del archivo físico ejecutable o release. "Aplicación.dll"
Namespace: Nombre lógico o de las bibliotecas, para acceder a las diferentes clases que están dentro del proyecto. "Aplicación"
Proyecto: Nombre físico de lo que estamos desarrollando. "Aplicación.csproj"

El tipo de resultado depende de los proyectos agregados en la solución.
Archivo de recursos son los recursos que el exclusivamente proyecto va a usar.

En Generar:
- Símbolos de compilación condicional permite agregar librerías o web services adicionales.
- Resultado:
- Generar ensamblados de serialización: Mediante un algoritmo de encriptación permite compactar y poder transmitirlo por la red.

En Depurar:
- Argumentos de la linea de comando: son variables que necesita para continuar con la ejecución.

En Rutas de acceso de referencia:
- Direccionar la ubicación de los componentes que permiten enlazar diferentes plataformas. ver: http://goo.gl/I2zGb

La diferencia entre Build y Rebuild: 
Al inicio ambos hacen lo mismo.
Rebuild: Genera o compila desde cero.
Build: Compila desde el anterior build. Menos pesado. Compila las modificaciones anteriores.
Limpiar/Clean: Borra completamente de la memoria el proyecto en cuestión y hace Rebuild.

Otra opción es borrar el bin y el debug pero previo al cierre de la solución o proyecto para que el VS al iniciar lo reconstruya.

- Las dependencias y el orden solo brindan información.
- En agregar referencia permite agregar las dll de otros componentes a usar en el proyecto: .NET, COM, Proyectos (proyectos adicionales), Examinar (dll, tlb, olb, ocx, exe, manifest).
- Agregar referencia de servicio: Web services externos.
- Ver diagrama de clases permite ver las clases y componentes que componen el proyecto.

Convenciones / Standares en el nombre de los componentes, variables y métodos:
Las tres primeras consonantes del control más el nombre de la clase a la que representa con la inicial en mayúscula.
Componentes (en singular):
- Form: frmCliente
- Button: btnGrabar
- Combobox: cmbSemestre

Variables:
- int: intEdad;
- string: strNombre;
- boolean blnValidar;

Métodos:
- validarCedula
- guardarFactura
- buscarCliente

Trabajando en un Formulario de Windows:
*.resx Archivo recurso del formulario.
*.Designer.cs Propiedades de inicio del formulario.
*.cs Programación de la clase.

Propiedades de los controles de CS
El name es el nombre al que se va a referir en la programación, mientras que el text es el nombre que se va a desplegar.

A partir de 2005 se generan en clases parciales, se dividen en la parte de diseño (Designer) y programación (cs), físicamente las clases están dividas en varias pero lógicamente son una sola (un solo Form).

ControlBox permite determinar si el formualrio tiene un cuadro de menú control o de sistema
Las propiedades mas usadas en un formulario son: WindowsState, StartPosition, ControlBox, Location.

Las propiedades más usadas en el txtBox son: Text, Name, textAlign, ReadOnly, Enabled, PasswordChar, Multiline (varias lineas de texto), MaxLength (tamaño máximo permitido), Location (Cordenadas de la ubicación actual del componente sobre el contenedor form), Size.



Realizar un informe que contenga: Título, nombre, desarrollo, comentario, recomendaciones.
Código: http://sdrv.ms/XokI9L
Proyecto Fuente: http://sdrv.ms/XokI9L
Corrida:



Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace PART
{
    static class Program
    {
        /// <summary>
        /// Punto de entrada principal para la aplicación.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new frmSitioTuristico());
        }
    }
}

frmSitioTuristico.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace PART
{
    public partial class frmSitioTuristico : Form
    {
        public frmSitioTuristico()
        {
            InitializeComponent();
        }
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Quiero visitar " + txtNombre.Text);
        }
    }
}
frmSitioTuristico.Designer.cs
namespace PART
{
    partial class frmSitioTuristico
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.txtNombre = new System.Windows.Forms.TextBox();
            this.lblNombre = new System.Windows.Forms.Label();
            this.lblProvincia = new System.Windows.Forms.Label();
            this.lblCanton = new System.Windows.Forms.Label();
            this.txtProvincia = new System.Windows.Forms.TextBox();
            this.txtCanton = new System.Windows.Forms.TextBox();
            this.btnGuardar = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // txtNombre
            //
            this.txtNombre.Location = new System.Drawing.Point(128, 75);
            this.txtNombre.Name = "txtNombre";
            this.txtNombre.Size = new System.Drawing.Size(100, 20);
            this.txtNombre.TabIndex = 0;
            //
            // lblNombre
            //
            this.lblNombre.AutoSize = true;
            this.lblNombre.Location = new System.Drawing.Point(53, 78);
            this.lblNombre.Name = "lblNombre";
            this.lblNombre.Size = new System.Drawing.Size(47, 13);
            this.lblNombre.TabIndex = 1;
            this.lblNombre.Text = "Nombre:";
            //
            // lblProvincia
            //
            this.lblProvincia.AutoSize = true;
            this.lblProvincia.Location = new System.Drawing.Point(65, 110);
            this.lblProvincia.Name = "lblProvincia";
            this.lblProvincia.Size = new System.Drawing.Size(54, 13);
            this.lblProvincia.TabIndex = 2;
            this.lblProvincia.Text = "Provincia:";
            //
            // lblCanton
            //
            this.lblCanton.AutoSize = true;
            this.lblCanton.Location = new System.Drawing.Point(65, 144);
            this.lblCanton.Name = "lblCanton";
            this.lblCanton.Size = new System.Drawing.Size(44, 13);
            this.lblCanton.TabIndex = 3;
            this.lblCanton.Text = "Cantón:";
            //
            // txtProvincia
            //
            this.txtProvincia.Location = new System.Drawing.Point(128, 107);
            this.txtProvincia.Name = "txtProvincia";
            this.txtProvincia.Size = new System.Drawing.Size(100, 20);
            this.txtProvincia.TabIndex = 4;
            //
            // txtCanton
            //
            this.txtCanton.Location = new System.Drawing.Point(128, 141);
            this.txtCanton.Name = "txtCanton";
            this.txtCanton.Size = new System.Drawing.Size(100, 20);
            this.txtCanton.TabIndex = 5;
            //
            // btnGuardar
            //
            this.btnGuardar.Location = new System.Drawing.Point(97, 190);
            this.btnGuardar.Name = "btnGuardar";
            this.btnGuardar.Size = new System.Drawing.Size(75, 23);
            this.btnGuardar.TabIndex = 6;
            this.btnGuardar.Text = "Guardar";
            this.btnGuardar.UseVisualStyleBackColor = true;
            this.btnGuardar.Click += new System.EventHandler(this.btnGuardar_Click);
            //
            // frmSitioTuristico
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Controls.Add(this.btnGuardar);
            this.Controls.Add(this.txtCanton);
            this.Controls.Add(this.txtProvincia);
            this.Controls.Add(this.lblCanton);
            this.Controls.Add(this.lblProvincia);
            this.Controls.Add(this.lblNombre);
            this.Controls.Add(this.txtNombre);
            this.Name = "frmSitioTuristico";
            this.Text = "Sitio Turístico";
            this.ResumeLayout(false);
            this.PerformLayout();
        }
        #endregion
        private System.Windows.Forms.TextBox txtNombre;
        private System.Windows.Forms.Label lblNombre;
        private System.Windows.Forms.Label lblProvincia;
        private System.Windows.Forms.Label lblCanton;
        private System.Windows.Forms.TextBox txtProvincia;
        private System.Windows.Forms.TextBox txtCanton;
        private System.Windows.Forms.Button btnGuardar;
    }
}





Empezando con JQuery


Ejemplo de código JavaScript en línea
<script>
    console.log('hello');
    </script>
Ejemplo de inclusión de un archivo externo JavaScript
<script src='/js/jquery.js'></script>
<script src="@Url.Content("~/Scripts/methods_de.js")" type="text/javascript"></script>

Cuando usted este escribiendo código JavaScript, podrá utilizar alguno de los siguientes métodos para enviar mensajes a la consola del depurador:
  • console.log() para enviar y registrar mensajes generales;
  • console.dir() para registrar un objeto y visualizar sus propiedades;
  • console.warn() para registrar mensajes de alerta;
  • console.error() para registrar mensajes de error;
Es muy recomendable que la guarde en los favoritos de su navegador para tenerla como guía de referencia.
El operador ternario
// establecer a foo igual a 1 si bar es verdadero;
    // caso contrario, establecer a foo igual a 0
    var foo = bar ? 1 : 0;

Funciones


Las funciones pueden ser creadas de varias formas:
Declaración de una función
function foo() { /* hacer algo */ }
Declaración de una función nombrada
var foo = function() { /* hacer algo */ }
Una función simple
var greet = function(person, greeting) {
      var text = greeting + ', ' + person;
      console.log(text);
    };
    
    
    greet('Rebecca', 'Hello');  // muestra en la consola 'Hello, Rebecca'
Una función que devuelve un valor
var greet = function(person, greeting) {
      var text = greeting + ', ' + person;
      return text;
    };
    
    console.log(greet('Rebecca','hello'));   // la función devuelve 'Hello, Rebecca',
                                             // la cual se muestra en la consola
Una función que devuelve otra función
var greet = function(person, greeting) {
      var text = greeting + ', ' + person;
      return function() { console.log(text); };
    };
    
    
    var greeting = greet('Rebecca', 'Hello');
    greeting();  // se muestra en la consola 'Hello, Rebecca'

Alcance

Funciones tienen acceso a variables definidas dentro del mismo alcance
var foo = 'hello';
    
    var sayHello = function() {
      console.log(foo);
    };
    
    sayHello();         // muestra en la consola 'hello'
    console.log(foo);   // también muestra en la consola 'hello'
El código de afuera no tiene acceso a la variable definida dentro de la función
var sayHello = function() {
      var foo = 'hello';
      console.log(foo);
    };
    
    sayHello();         // muestra en la consola 'hello'
    console.log(foo);   // no muestra nada en la consola
Variables con nombres iguales pero valores diferentes pueden existir en diferentes alcances
var foo = 'world';
    
    var sayHello = function() {
      var foo = 'hello';
      console.log(foo);
    };
    
    sayHello();         // muestra en la consola 'hello'
    console.log(foo);   // muestra en la consola 'world'
Las funciones pueden “ver” los cambios en las variables antes de que la función sea definida
var myFunction = function() {
      var foo = 'hello';
    
      var myFn = function() {
          console.log(foo);
      };
    
      foo = 'world';
    
      return myFn;
    };
    
    var f = myFunction();
    f();  // registra 'world' -- error
Alcance
// una función anónima autoejecutable
    (function() {
      var baz = 1;
      var bim = function() { alert(baz); };
      bar = function() { alert(baz); };
    })();
    
    console.log(baz);  // La consola no muestra nada, ya que baz
                       // esta definida dentro del alcance de la función anónima
    
    bar();  // bar esta definido fuera de la función anónima
            // ya que fue declarada sin la palabra clave var; además,
            // como fue definida dentro del mismo alcance que baz,
            // se puede consultar el valor de baz a pesar que
            // ésta este definida dentro del alcance de la función anónima
    
    bim();  // bim no esta definida para ser accesible fuera de la función anónima,
            // por lo cual se mostrará un error