SQL Base de Datos de Auto Shop


Ejemplo

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 william.jones@example.com 3347927472 TELÉFONO
2 David Molinero dmiller@example.net 2137921892 CORREO ELECTRÓNICO
3 Ricardo Davis richard0123@example.com 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', 'william.jones@example.com', '3347927472', 'PHONE'),
    (2, 'David', 'Miller', 'dmiller@example.net', '2137921892', 'EMAIL'),
    (3, 'Richard', 'Davis', 'richard0123@example.com', 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')
;