lunes, 27 de julio de 2009

claves

Clave primaria
En el diseño de bases de datos relacionales, se llama clave primaria a un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una clave primaria comprende de esta manera una columna o conjunto de columnas. No pueden haber dos filas en una tabla que tengan la misma clave primaria.

Una llave primaria es un campo único , irrepetible que sirve para identificar los registros de una tabla como distintos, además de que sirve para hacer relaciones 1:1, 1:M , M:M (uno a uno, uno a muchos, muchos a muchos) entre tablas, sin las llaves primaria las bases de dato relacionales no tendrían sentido y siempre existiría información repetida

Caracteristicas
Una clave primaria debe identificar unívocamente a todas las posibles filas de una tabla y no solo a las filas que se encuentran en un momento determinado. Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN (asociado a un libro). Las guias telefónicas y diccionarios no pueden usar nombres o palabras o números del sistema decimal de Dewey como claves candidatas, porque identifican unívocamente números de teléfono o palabras.

Una clave primaria es un caso especial de clave única. La mayor diferencia es que para claves únicas, no se impone automáticamente la restricción implícita NOT NULL, mientras que para claves primarias, sí. Así, los valores en columnas de clave única pueden o no ser NULL. Otra diferencia es que las claves primarias deben definirse por medio de otra sintaxis.

como se representa en un diagrama

textoalternativo



en Mysql como se crea una llave primaria

Las claves primarias están definidas el estándar ANSI SQL, mediante la directiva PRIMARY KEY. La sintaxis para aplicar tal directiva a una tabla existente está definida en SQL:2003 de esta manera:
ALTER TABLE
ADD [ CONSTRAINT ]
PRIMARY KEY ( {, }... )

La clave primaria puede especificarse directamente en el momento de la creación de la tabla también. En el estándar SQL, las claves primarias pueden estar compuestas por una o más columnas. Cada columna que forme parte de la clave primaria queda implícitamente definida como NOT NULL. Nótese que algunos sistemas de bases de datos requieren que se marque explícitamente a las columnas de clave primaria como NOT NULL.
CREATE TABLE nombre_de_la_tabla (
id_col INT, col2 CHARACTER VARYING(20),
...
CONSTRAINT clapri_tabla PRIMARY KEY(id_col),
...
)

En el caso en que la clave primaria sea una sola columna, ésta puede marcarse como tal por medio de la siguiente sintaxis:
CREATE TABLE nombre_de_la_tabla (
id_col INT PRIMARY KEY,
col2 CHARACTER VARYING(20),
...
)

Clave candidata
Una clave candidata es una superclave en la que ninguno de sus subconjuntos es una superclave de la relación. El atributo o conjunto de atributos de la relación es una clave candidata para si y sólo si satisface las siguientes propiedades:

Unicidad: nunca hay dos tuplas en la relación con el mismo valor de .
Irreducibilidad (minimalidad): ningún subconjunto de tiene la propiedad de unicidad, es decir, no se pueden eliminar componentes de sin destruir la unicidad.

Cuando una clave candidata está formada por más de un atributo, se dice que es una clave compuesta. Una relación puede tener varias claves candidatas. Por ejemplo, en la relación OFICINA, el atributo Población no es una clave candidata ya que puede haber varias oficinas en una misma población. Sin embargo, ya que la empresa asigna un código único a cada oficina, el atributo Onum sí es una clave candidata de la relación OFICINA. También son claves candidatas de esta relación los atributos Teléfono y Fax.

Clave alternativa
Una clave alternativa es aquella clave candidata que no ha sido seleccionada como clave primaria, pero que también puede identificar de forma única a una fila dentro de una tabla. Ejemplo: Si en una tabla clientes definimos el número de documento (id_cliente) como clave primaria, el número de seguro social de ese cliente podría ser una clave alternativa. En este caso no se usó como clave primaria porque es posible que no se conozca ese dato en todos los clientes.

lunes, 29 de junio de 2009

tipos de datos en mysql

tipos de datos en mysql

Al diseñar nuestras tablas tenemos que especificar el tipo de datos y tamaño que podrá almacenar cada campo. Una correcta elección debe procurar que la tabla no se quede corta en su capacidad, que destine un tamaño apropiado a la longitud de los datos, y la máxima velocidad de ejecución

Básicamente mysql admite dos tipos de datos: números y cadenas de carácteres. Junto a estos dos grandes grupos, se admiten otros tipos de datos especiales: formatos de fecha, etc.
datos numéricosEn este tipo de campos solo pueden almacenarse números, positivos o negativos, enteros o decimales, en notación hexadecimal, cientifica o decimal.Los tipos numéricos tipo integer admiten los atributos SIGNED y UNSIGNED indicando en el primer caso que pueden tener valor negativo, y solo positivo en el segundo.
Los tipos numéricos pueden además usar el atributo ZEROFILL en cuyo caso los números se completaran hasta la máxima anchura disponible con ceros (column age INT(5) zerofill => valor 23 se almacenará como 00023)

BIT o BOOL, para un número entero que puede ser 0 ó 1

TINYINT es un número entero con rango de valores válidos desde -128 a 127. Si se configura como unsigned (sin signo), el rango de valores es de 0 a 255

SMALLINT, para números enteros, con rango desde -32768 a 32767. Si se configura como unsigned, 0 a 65535.

MEDIUMINT para números enteros; el rango de valores va desde -8.388608 a 8388607. Si se configura como unsigned, 0 a 16777215

INT para almacenar números enteros, en un rango de -2147463846 a 2147483647. Si configuramos este dato como unsigned, el rango es 0 a 4294967295

BIGINT número entero con rango de valores desde -9223372036854775808 a 9223372036854775807. Unsigned, desde 0 a 18446744073709551615.

FLOAT (m,d) representa números decimales. Podemos especificar cuantos dígitos (m) pueden utilizarse (término también conocido como ancho de pantalla), y cuantos en la parte decimal (d). Mysql redondeará el decimal para ajustarse a la capacidad.

DOUBLE Número de coma flotante de precisión doble. Es un tipo de datos igual al anterior cuya única diferencia es el rango numérico que abarca

DECIMAL almacena los números como cadenas.
Caracteres o cadenas

CHAR Este tipo se utiliza para almacenar cadenas de longitud fija. Su longitud abarca desde 1 a 255 caracteres.

VARCHAR Al igual que el anterior se utiliza para almacenar cadenas, en el mismo rango de 1-255 caracteres, pero en este caso, de longitud variable. Un campo CHAR ocupará siempre el máximo de longitud que le hallamos asignado, aunque el tamaño del dato sea menor (añadiendo espacios adicionales que sean precisos). Mientras que VARCHAR solo almacena la longitud del dato, permitiendo que el tamaño de la base de datos sea menor. Eso si, el acceso a los datos CHAR es mas rápido que VARCHAR.

No pueden alternarse columnas CHAR y VARCHAR en la misma tabla. Mysql cambiará las columnas CHAR a VARCHAR. Tambien cambia automaticamente a CHAR si usamos VARCHAR con valor de 4 o menos.

TINYTEXT, TINYBLOB para un máximo de 255 caracteres. La diferencia entre la familia de datatypes text y blob es que la primera es para cadenas de texto plano (sin formato) y case-insensitive (sin distinguir mayusculas o minusculas) mientras que blob se usa para objetos binarios: cualquier tipo de datos o información, desde un archivo de texto con todo su formato (se diferencia en esto de el tipo Text) hasta imágenes, archivos de sonido o video

TEXT y BLOB se usa para cadenas con un rango de 255 - 65535 caracteres. La diferencia entre ambos es que TEXT permite comparar dentro de su contenido sin distinguir mayusculas y minusculas, y BLOB si distingue.

MEDIUMTEXT, MEDIUMBLOB textos de hasta 16777215 caracteres.

LONGTEXT, LONGBLOB, hasta máximo de 4.294.967.295 caracteres
VariosDATE para almacenar fechas. El formato por defecto es YYYY MM DD desde 0000 00 00 a 9999 12 31.

DATETIME Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos

TIMESTAMP Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo

TIME almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS'

YEAR almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos.

SET un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores.

ENUM es igual que SET, pero solo se puede almacenar uno de los valores de la lista


Tipos de datos espaciales de MySQL

MySQL tiene tipos de datos que corresponden a las clases OpenGIS. Algunos de estos tipos almacenan valores geométricos simples:

GEOMETRY

POINT

LINESTRING

POLYGON

GEOMETRY can store geometry values of any type. The other single-value types, POINT and

LINESTRING and POLYGON, restrict their values to a particular geometry type.
The other data types hold collections of values:

MULTIPOINT

MULTILINESTRING

MULTIPOLYGON

GEOMETRYCOLLECTION

GEOMETRYCOLLECTION puede almacenar objetos de cualquier tipo. Los otros tipos de colección, MULTIPOINT y MULTILINESTRING y MULTIPOLYGON y GEOMETRYCOLLECTION, restringen sus miembros a aquellos que sean de un tipo de geometría particular.

miércoles, 24 de junio de 2009

MySQL

¿que esz mysql?

MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones.[1] MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual.
Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C.


Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y el copyright del código está en poder del autor individual, MySQL es propietario y está patrocinado por una empresa privada, que posee el copyright de la mayor parte del código.
Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran vía Internet. MySQL AB fue fundado por David Axmark, Allan Larsson y Michael Widenius.


Caracteristicas del mysql

Inicialmente, MySQL carecía de elementos considerados esenciales en las bases de datos relacionales, tales como integridad referencial y transacciones. A pesar de ello, atrajo a los desarrolladores de páginas web con contenido dinámico, justamente por su simplicidad.


Poco a poco los elementos de los que carecía MySQL están siendo incorporados tanto por desarrollos internos, como por desarrolladores de software libre. Entre las características disponibles en las últimas versiones se puede destacar:


• Amplio subconjunto del lenguaje SQL. Algunas extensiones son incluidas igualmente.

• Disponibilidad en gran cantidad de plataformas y sistemas. • Diferentes opciones de almacenamiento según si se desea velocidad en las operaciones o el mayor número de operaciones disponibles.

• Transacciones y claves foráneas.

• Conectividad segura.

• Replicación.

• Búsqueda e indexación de campos de texto.

MySQL es un sistema de administración de bases de datos. Una base de datos es una colección estructurada de tablas que contienen datos. Esta puede ser desde una simple lista de compras a una galería de pinturas o el vasto volumen de información en una red corporativa. Para agregar, acceder a y procesar datos guardados en un computador, usted necesita un administrador como MySQL Server. Dado que los computadores son muy buenos manejando grandes cantidades de información, los administradores de bases de datos juegan un papel central en computación, como aplicaciones independientes o como parte de otras aplicaciones.
MySQL es un sistema de administración relacional de bases de datos. Una base de datos relacional archiva datos en tablas separadas en vez de colocar todos los datos en un gran archivo. Esto permite velocidad y flexibilidad. Las tablas están conectadas por relaciones definidas que hacen posible combinar datos de diferentes tablas sobre pedido.
MySQL es software de fuente abierta. Fuente abierta significa que es posible para cualquier persona usarlo y modificarlo. Cualquier persona puede bajar el código fuente de MySQL y usarlo sin pagar. Cualquier interesado puede estudiar el código fuente y ajustarlo a sus necesidades. MySQL usa el GPL (GNU General Public License) para definir que puede hacer y que no puede hacer con el software en diferentes situaciones. Si usted no se ajusta al GPL o requiere introducir código MySQL en aplicaciones comerciales, usted puede comprar una versión comercial licenciada.


• Un amplio subconjunto de ANSI SQL 99, y varias extensiones.

• Soporte a multiplataforma • Procedimientos almacenados • Disparadores (triggers)

• Cursores

• Vistas actualizables

• Soporte a VARCHAR

• INFORMATION_SCHEMA

• Modo Strict

• Soporte X/Open XA de transacciones distribuidas; transacción en dos fases como parte de esto, utilizando el motor InnoDB de Oracle

• Motores de almacenamiento independientes (MyISAM para lecturas rápidas, InnoDB para transacciones e integridad referencial)

• Transacciones con los motores de almacenamiento InnoDB, BDB Y Cluster; puntos de recuperación (savepoints) con InnoDB

• Soporte para SSL

• Query caching

• Sub-SELECTs (o SELECTs anidados)

• Réplica con un maestro por esclavo, varios esclavos por maestro, sin soporte automático para múltiples maestros por esclavo.

• indexing y buscando campos de texto completos usando el motor de almacenamiento MyISAM

• Embedded database library

• Soporte completo para Unicode

• Conforme a las reglas ACID usando los motores InnoDB, BDB y Cluster

• Shared-nothing clustering through MySQL Cluster

• Usa GNU Automake, Autoconf, y Libtool para portabilidad

• Uso de multihilos mediante hilos del kernel.

• Usa tablas en disco b-tree para búsquedas rápidas con compresión de índice

• Tablas hash en memoria temporales

• El código MySQL se prueba con Purify (un detector de memoria perdida comercial) así como con Valgrind, una herramienta GPL

• Completo soporte para operadores y funciones en cláusulas select y where.

• Completo soporte para cláusulas group by y order by, soporte de funciones de agrupación

• Seguridad: ofrece un sistema de contraseñas y privilegios seguro mediante verificación basada en el host y el tráfico de contraseñas está cifrado al conectarse a un servidor.

• Soporta gran cantidad de datos. MySQL Server tiene bases de datos de hasta 50 millones de registros.

• Se permiten hasta 64 índices por tabla (32 antes de MySQL 4.1.2). Cada índice puede consistir desde 1 hasta 16 columnas o partes de columnas. El máximo ancho de límite son 1000 bytes (500 antes de MySQL 4.1.2).

• Los clientes se conectan al servidor MySQL usando sockets TCP/IP en cualquier plataforma. En sistemas Windows se pueden conectar usando named pipes y en sistemas Unix usando ficheros socket Unix.

• En MySQL 5.0, los clientes y servidores Windows se pueden conectar usando memoria compartida.

• MySQL contiene su propio paquete de pruebas de rendimiento proporcionado con el código fuente de la distribución de MySQL.

lunes, 15 de junio de 2009

MERE E/G

Generalización

El concepto de herencia define otro tipo de relación entre clases (generalización) donde una clase comparte estructura y/o comportamiento con una o más clases. El término superclase se refiere a la clase que guarda la información común, mientras que el término subclase se refiere a cada uno de los descendientes de la superclase.

A partir de las relaciones de generalización se crea una jerarquía de abstracción en la cual una subclase puede heredar de una o más superclases. Es por ésto que a la herencia también se le suele denominar jerarquía ``es una'' o ``clase de''.

Una subclase hereda todos los atributos, operaciones y relaciones definidos en alguna de sus superclases, de forma que los atributos y operaciones comunes se definen en el nivel más alto de la jerarquía. Las subclases se pueden ampliar (especializar) con atributos y operaciones adicionales, que se aplican sólo a ese nivel de la jerarquía. Además una subclase puede tener su propia implementación de una operación de la superclase (polimorfismo).

Ya que la herencia no es una relación entre objetos diferentes, este tipo de relaciones no se nombra, no se utilizan roles, ni se expresa multiplicidad, utilizándose la relación generalización sin adornos.

Existen dos formas básicas de identificar herencia en un modelo, por generalización o por especialización:

Generalización:
La generalización proporciona la capacidad de crear superclases que encapsulan la estructura y el comportamiento común a varias clases.

Especialización:
La especialización proporciona la capacidad de crear subclases que representan refinamientos de una superclase, generalmente a nadiendo estructura y comportamiento a las nuevas subclases. Se a naden subclases para especializar el comportamiento de clases ya existentes. Las operaciones heredadas pueden ser reescritas por una subclase, lo que conocemos como polimorfismo, pero por el contrario, la subclase no debería proporcionar una estructura o comportamiento menor que el de su superclase.

Disyunción
(del latín disiunctĭo, -ōnis 'desunión') significa separar o desunir. Tiene significados en lógica, filosofía, semántica lingüística y sintaxis, sin embargo todos son muy similares y se refieren a un operador sobre dos o más elementos que resulta en verdad si y sólo si al menos un elemento es verdadero.

sábado, 6 de junio de 2009