I have a table called Active
In this table I store the information of the assets of a company, example
TV brand, model, serial number, where it is located, in which company it is located, department etc...
An asset can have N number of categories.
A category can have n number of subcategories.
Example
an asset can have several asset types
- ground
- Office equipment
- IT equipment 4 etc.
in the ground subcategory there are only 2 types
1.Rural
2. Urban
If I try to create an asset of type 1. ground
when its subcategory is 3, the database engine allows me to create the record
But it shouldn't be like that, because when
ground = 1
There is no subcategory greater than 3
they only exist 1.Rural 2. Urban
Query
select
a.id,
a.IdActivoTipo,
tipo.Nombre as 'Categoria',
cat.Id,
cat.Nombre as 'SubCategoria'
from Inventario.Activo as a
inner join Inventario.AcTipoLista as lista ON lista.Id = a.IdActivoTipo
inner join Inventario.ActivoTipo as tipo ON tipo.Id = a.IdActivoTipo
inner join Inventario.ActivoTipoCategoria as cat on cat.Id = a.IdActivoTipoCategor
-- ACTIVO
CREATE TABLE [Inventario].[Activo]
(
[Id] INT IDENTITY(1,1),
[IdInfoCompania] INT,
[IdDepartamento] INT,
[IdUnidad] INT,
[IdLocalidad] INT,
[IdActivoTipo] INT,
[IdActivoTipoCategoria] INT,
[Marca] VARCHAR(100) NULL,
[Color] VARCHAR(100) NULL,
[Modelo] VARCHAR(100) NULL,
[Componentes] VARCHAR(500) NULL,
[Serial] VARCHAR(100) NULL,
[Condicion] BIT DEFAULT(1) NULL,
[Observaciones] VARCHAR(500),
[FechaCreacion] DATETIME DEFAULT (GETDATE()),
CONSTRAINT PK_Activo_ID PRIMARY KEY (Id)
)
-- TABLE ActivoTipo
CREATE TABLE [Inventario].[ActivoTipo]
(
[Id] INT IDENTITY(1,1),
[Nombre] VARCHAR(101) NOT NULL,
[FechaCreacion] DATETIME DEFAULT (GETDATE()),
CONSTRAINT UNIQ_NombreActivoTipo UNIQUE(Nombre),
CONSTRAINT PK_ActivoTipo_ID PRIMARY KEY(Id),
)
GO
CREATE TABLE [Inventario].[ActivoTipoCategoria]
(
[Id] INT IDENTITY(1,1),
[Nombre] VARCHAR(500),
[IdActivoTipo] INT,
CONSTRAINT UNIQ_NombreActivoTipoCategoria UNIQUE(Nombre),
CONSTRAINT PK_ActivoTipoCategoria_ID PRIMARY KEY(Id)
)
CREATE TABLE [Inventario].[AcTipoLista]
(
[Id] INT IDENTITY(1,1),
[IdActivo] INT,
[IdActivoTipo] INT,
[IdActivoTipoCategoria] INT,
CONSTRAINT PK_AcTipoLista_ID PRIMARY KEY(Id)
)
--RELACIONES
-- InfoCompania_Activo
ALTER TABLE [Inventario].[Historial]
ADD
CONSTRAINT FK_HistorialInfoCompania_ID FOREIGN KEY (IdInfoCompania) REFERENCES [Compania].[InfoCompania](Id),
CONSTRAINT FK_HistorialActivo_ID FOREIGN KEY (IdActivo) REFERENCES [Inventario].[Activo](Id)
GO
-- Activo
ALTER TABLE [Inventario].[Activo]
ADD
CONSTRAINT FK_InfoCompania_ID FOREIGN KEY (IdInfoCompania) REFERENCES [Compania].[InfoCompania](Id),
CONSTRAINT FK_Departamento_ID FOREIGN KEY (IdDepartamento) REFERENCES [Compania].[Departamento](Id),
CONSTRAINT FK_Unidad_ID FOREIGN KEY (IdUnidad) REFERENCES [Compania].[Unidad](Id),
CONSTRAINT FK_Localidad_ID FOREIGN KEY (IdLocalidad) REFERENCES [Compania].[Localidad](Id)
GO
-- AcTipoLista
ALTER TABLE [Inventario].[AcTipoLista]
ADD CONSTRAINT FK_AcTipoLista_Activo_ID FOREIGN KEY(IdActivo) REFERENCES [Inventario].[Activo](Id),
CONSTRAINT FK_AcTipoLista_ActivoTipo_ID FOREIGN KEY(IdActivoTipo) REFERENCES [Inventario].[ActivoTipo](Id),
CONSTRAINT FK_AcTipoLista_ActivoCategoria_ID FOREIGN KEY(IdActivoTipoCategoria) REFERENCES [Inventario].[ActivoTipoCategoria](Id)
-- ActivoTipoCategoria
ALTER TABLE [Inventario].[ActivoTipoCategoria]
ADD CONSTRAINT FK_ActivoTipoCategoriaID FOREIGN KEY (IdActivoTipo) REFERENCES [Inventario].[ActivoTipo](Id)



