¿Conoces una buena fuente para aprender a diseñar soluciones SQL?
Más allá de la sintaxis básica del lenguaje, estoy buscando algo que me ayude a comprender:
- Qué tablas construir y cómo vincularlas
- Cómo diseñar para diferentes escalas (pequeña aplicación de cliente para un gran sitio web distribuido)
- Cómo escribir consultas SQL efectivas / eficientes / elegantes
sql
database
database-design
scalability
ripper234
fuente
fuente
Respuestas:
Comencé con este libro: Diseño de base de datos relacional claramente explicado (Serie Morgan Kaufmann en sistemas de gestión de datos) (Libro en rústica) por Jan L. Harrington y lo encontré muy claro y útil.
y a medida que avanza, este también fue bueno. Sistemas de bases de datos: un enfoque práctico para el diseño, implementación y gestión (International Computer Science Series) (Paperback)
Creo que SQL y el diseño de la base de datos son habilidades diferentes (pero complementarias).
fuente
Empecé con este artículo
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
Es bastante conciso en comparación con leer un libro completo y explica muy bien los conceptos básicos del diseño de la base de datos (normalización, tipos de relaciones).
fuente
La experiencia cuenta mucho, pero en términos de diseño de tablas, puede aprender mucho de cómo operan los ORM como Hibernate y Grails para ver por qué hacen las cosas. Adicionalmente:
Mantenga diferentes tipos de datos separados: no almacene direcciones en su tabla de pedidos, enlace a una dirección en una tabla de direcciones separada, por ejemplo.
Personalmente, me gusta tener un número entero o una clave sustituta larga en cada tabla (que contiene datos, no aquellos que vinculan diferentes tablas, relaciones e, g., M: n) que es la clave principal.
También me gusta tener una columna de marca de tiempo creada y modificada.
Asegúrese de que cada columna que haga "where column = val" en cualquier consulta tenga un índice. Quizás no sea el índice más perfecto del mundo para el tipo de datos, sino al menos un índice.
Configura tus claves foráneas. También configure las reglas ON DELETE y ON MODIFY cuando sea relevante, ya sea en cascada o en nulo, dependiendo de la estructura de su objeto (por lo que solo necesita eliminar una vez en la 'cabeza' de su árbol de objetos, y todos los sub-objetos de ese objeto obtienen eliminado automáticamente).
Si desea modularizar su código, es posible que desee modularizar su esquema de base de datos; por ejemplo, esta es el área de "clientes", esta es el área de "pedidos" y esta es el área de "productos", y use tablas de unión / enlace entre ellos, incluso si son relaciones 1: n, y tal vez duplican la información importante (es decir, duplican el nombre del producto, el código, el precio en su tabla de detalles de pedido). Lea sobre la normalización.
Alguien más recomendará exactamente lo contrario para algunas o todas las anteriores: p: nunca hay una forma real de hacer algunas cosas, ¡eh!
fuente
explain analyze
si un índice es un beneficio.Realmente me gustó este artículo ... http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo
fuente
Head First SQL es una gran introducción.
fuente
Estas son preguntas que, en mi opinión, requieren diferentes conocimientos de diferentes dominios.
Dicho esto, tal vez quieras leer algunos libros, personalmente he usado este libro en mi curso universitario de base de datos (y encontré uno decente, pero no he leído otros libros en este campo, así que mi consejo es que revises algunos buenos libros en diseño de bases de datos).
fuente
Ha pasado un tiempo desde que lo leí (por lo tanto, no estoy seguro de cuánto aún es relevante), pero recuerdo que el libro SQL for Smarties de Joe Celko proporciona mucha información sobre cómo escribir consultas elegantes, efectivas y eficientes. .
fuente