Buscar..


Base de Datos de Auto Shop

En el siguiente ejemplo, la base de datos para un negocio de taller de automóviles, tenemos una lista de departamentos, empleados, clientes y automóviles de clientes. Estamos utilizando claves externas para crear relaciones entre las distintas tablas.

Ejemplo en vivo: violín de SQL


Relaciones entre tablas

  • Cada departamento puede tener 0 o más empleados
  • Cada empleado puede tener 0 o 1 gerente
  • Cada cliente puede tener 0 o más coches

Departamentos

Carné de identidad Nombre
1 HORA
2 Ventas
3 Tecnología

Sentencias SQL para crear la tabla:

CREATE TABLE Departments (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(25) NOT NULL,
    PRIMARY KEY(Id)
);

INSERT INTO Departments
    ([Id], [Name])
VALUES
    (1, 'HR'),
    (2, 'Sales'),
    (3, 'Tech')
;

Empleados

Carné de identidad FName LName Número de teléfono ManagerId DepartmentId Salario Fecha de contratación
1 James Herrero 1234567890 NULO 1 1000 01-01-2002
2 Juan Johnson 2468101214 1 1 400 23-03-2005
3 Miguel Williams 1357911131 1 2 600 12-05-2009
4 Johnathon Herrero 1212121212 2 1 500 24-07-2016

Sentencias SQL para crear la tabla:

CREATE TABLE Employees (
    Id INT NOT NULL AUTO_INCREMENT,
    FName VARCHAR(35) NOT NULL,
    LName VARCHAR(35) NOT NULL,
    PhoneNumber VARCHAR(11),
    ManagerId INT,
    DepartmentId INT NOT NULL,
    Salary INT NOT NULL,
    HireDate DATETIME NOT NULL,
    PRIMARY KEY(Id),
    FOREIGN KEY (ManagerId) REFERENCES Employees(Id),
    FOREIGN KEY (DepartmentId) REFERENCES Departments(Id)
);

INSERT INTO Employees
    ([Id], [FName], [LName], [PhoneNumber], [ManagerId], [DepartmentId], [Salary], [HireDate])
VALUES
    (1, 'James', 'Smith', 1234567890, NULL, 1, 1000, '01-01-2002'),
    (2, 'John', 'Johnson', 2468101214, '1', 1, 400, '23-03-2005'),
    (3, 'Michael', 'Williams', 1357911131, '1', 2, 600, '12-05-2009'),
    (4, 'Johnathon', 'Smith', 1212121212, '2', 1, 500, '24-07-2016')
;

Clientes

Carné de identidad FName LName Email Número de teléfono Contacto preferido
1 William Jones [email protected] 3347927472 TELÉFONO
2 David Molinero [email protected] 2137921892 CORREO ELECTRÓNICO
3 Ricardo Davis [email protected] NULO CORREO ELECTRÓNICO

Sentencias SQL para crear la tabla:

CREATE TABLE Customers (
    Id INT NOT NULL AUTO_INCREMENT,
    FName VARCHAR(35) NOT NULL,
    LName VARCHAR(35) NOT NULL,
    Email varchar(100) NOT NULL,
    PhoneNumber VARCHAR(11),
    PreferredContact VARCHAR(5) NOT NULL,
    PRIMARY KEY(Id)
);

INSERT INTO Customers
    ([Id], [FName], [LName], [Email], [PhoneNumber], [PreferredContact])
VALUES
    (1, 'William', 'Jones', '[email protected]', '3347927472', 'PHONE'),
    (2, 'David', 'Miller', '[email protected]', '2137921892', 'EMAIL'),
    (3, 'Richard', 'Davis', '[email protected]', NULL, 'EMAIL')
;

Coches

Carné de identidad Identificación del cliente ID de empleado Modelo Estado Coste total
1 1 2 Ford F-150 LISTO 230
2 1 2 Ford F-150 LISTO 200
3 2 1 Ford Mustang ESPERANDO 100
4 3 3 Toyota Prius TRABAJANDO 1254

Sentencias SQL para crear la tabla:

CREATE TABLE Cars (
    Id INT NOT NULL AUTO_INCREMENT,
    CustomerId INT NOT NULL,
    EmployeeId INT NOT NULL,
    Model varchar(50) NOT NULL,
    Status varchar(25) NOT NULL,
    TotalCost INT NOT NULL,
    PRIMARY KEY(Id),
    FOREIGN KEY (CustomerId) REFERENCES Customers(Id),
    FOREIGN KEY (EmployeeId) REFERENCES Employees(Id)
);

INSERT INTO Cars
    ([Id], [CustomerId], [EmployeeId], [Model], [Status], [TotalCost])
VALUES
    ('1', '1', '2', 'Ford F-150', 'READY', '230'),
    ('2', '1', '2', 'Ford F-150', 'READY', '200'),
    ('3', '2', '1', 'Ford Mustang', 'WAITING', '100'),
    ('4', '3', '3', 'Toyota Prius', 'WORKING', '1254')
;

Base de datos de la biblioteca

En esta base de datos de ejemplo para una biblioteca, tenemos tablas de Autores , Libros y Libros de Autores .

Ejemplo en vivo: violín de SQL

Los autores y los libros se conocen como tablas base , ya que contienen definición de columna y datos para las entidades reales en el modelo relacional. BooksAuthors se conoce como la tabla de relaciones , ya que esta tabla define la relación entre la tabla Libros y Autores .


Relaciones entre tablas

  • Cada autor puede tener 1 o más libros.
  • Cada libro puede tener 1 o más autores.

Autores

( ver tabla )

Carné de identidad Nombre País
1 JD Salinger Estados Unidos
2 F. Scott. Fitzgerald Estados Unidos
3 Jane Austen Reino Unido
4 Scott Hanselman Estados Unidos
5 Jason N. Gaylord Estados Unidos
6 Pranav Rastogi India
7 Todd miranda Estados Unidos
8 Christian Wenz Estados Unidos

SQL para crear la tabla:

CREATE TABLE Authors (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(70) NOT NULL,
    Country VARCHAR(100) NOT NULL,
    PRIMARY KEY(Id)
);

INSERT INTO Authors
    (Name, Country)
VALUES
    ('J.D. Salinger', 'USA'),
    ('F. Scott. Fitzgerald', 'USA'),
    ('Jane Austen', 'UK'),
    ('Scott Hanselman', 'USA'),
    ('Jason N. Gaylord', 'USA'),
    ('Pranav Rastogi', 'India'),
    ('Todd Miranda', 'USA'),
    ('Christian Wenz', 'USA')
;

Libros

( ver tabla )

Carné de identidad Título
1 El Guardian en el centeno
2 Nueve historias
3 Franny y Zooey
4 El gran Gatsby
5 Tierna id la noche
6 Orgullo y prejuicio
7 Profesional ASP.NET 4.5 en C # y VB

SQL para crear la tabla:

CREATE TABLE Books (
    Id INT NOT NULL AUTO_INCREMENT,
    Title VARCHAR(50) NOT NULL,
    PRIMARY KEY(Id)
);

INSERT INTO Books
    (Id, Title)
VALUES
    (1, 'The Catcher in the Rye'),
    (2, 'Nine Stories'),
    (3, 'Franny and Zooey'),
    (4, 'The Great Gatsby'),
    (5, 'Tender id the Night'),
    (6, 'Pride and Prejudice'),
    (7, 'Professional ASP.NET 4.5 in C# and VB')
;

LibrosAutoras

( ver tabla )

BookId AuthorId
1 1
2 1
3 1
4 2
5 2
6 3
7 4
7 5
7 6
7 7
7 8

SQL para crear la tabla:

CREATE TABLE BooksAuthors (
    AuthorId INT NOT NULL,
    BookId  INT NOT NULL,
    FOREIGN KEY (AuthorId) REFERENCES Authors(Id),
    FOREIGN KEY (BookId) REFERENCES Books(Id)
);

INSERT INTO BooksAuthors
    (BookId, AuthorId)
VALUES
    (1, 1),
    (2, 1),
    (3, 1),
    (4, 2),
    (5, 2),
    (6, 3),
    (7, 4),
    (7, 5),
    (7, 6),
    (7, 7),
    (7, 8)
;

Ejemplos

Ver todos los autores ( ver ejemplo en vivo ):

SELECT * FROM Authors;

Ver todos los títulos de libros ( ver ejemplo en vivo ):

SELECT * FROM Books;

Ver todos los libros y sus autores ( ver ejemplo en vivo ):

SELECT
  ba.AuthorId,
  a.Name AuthorName,
  ba.BookId,
  b.Title BookTitle
FROM BooksAuthors ba
  INNER JOIN Authors a ON a.id = ba.authorid
  INNER JOIN Books b ON b.id = ba.bookid
;

Tabla de países

En este ejemplo, tenemos una tabla de países . Una tabla para países tiene muchos usos, especialmente en aplicaciones financieras que involucran divisas y tipos de cambio.

Ejemplo en vivo: violín de SQL

Algunas aplicaciones de software de datos de mercado como Bloomberg y Reuters requieren que le asigne a su API un código de país de 2 o 3 caracteres junto con el código de moneda. Por lo tanto, esta tabla de ejemplo tiene la columna de código ISO 2 caracteres y las columnas de código ISO3 3 caracteres.


Países

( ver tabla )

Carné de identidad YO ASI ISO3 Isonumérico Nombre del país Capital Código Continente Código de moneda
1 AU AUS 36 Australia Canberra jefe AUD
2 Delaware DEU 276 Alemania Berlina UE EUR
2 EN INDIANA 356 India Nueva Delhi COMO INR
3 LA LAO 418 Laos Vientiane COMO LAGO
4 NOSOTROS Estados Unidos 840 Estados Unidos Washington N / A Dólar estadounidense
5 ZW ZWE 716 Zimbabue Harare AF ZWL

SQL para crear la tabla:

CREATE TABLE Countries (
    Id INT NOT NULL AUTO_INCREMENT,
    ISO VARCHAR(2) NOT NULL,
    ISO3 VARCHAR(3) NOT NULL,
    ISONumeric INT NOT NULL,
    CountryName VARCHAR(64) NOT NULL,
    Capital VARCHAR(64) NOT NULL,
    ContinentCode VARCHAR(2) NOT NULL,
    CurrencyCode VARCHAR(3) NOT NULL,
    PRIMARY KEY(Id)
)
;

INSERT INTO Countries
    (ISO, ISO3, ISONumeric, CountryName, Capital, ContinentCode, CurrencyCode)
VALUES
    ('AU', 'AUS', 36, 'Australia', 'Canberra', 'OC', 'AUD'),
    ('DE', 'DEU', 276, 'Germany', 'Berlin', 'EU', 'EUR'),
    ('IN', 'IND', 356, 'India', 'New Delhi', 'AS', 'INR'),
    ('LA', 'LAO', 418, 'Laos', 'Vientiane', 'AS', 'LAK'),
    ('US', 'USA', 840, 'United States', 'Washington', 'NA', 'USD'),
    ('ZW', 'ZWE', 716, 'Zimbabwe', 'Harare', 'AF', 'ZWL')
;


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow