Hola estoy con una duda sobre la creacion de mi base de datos, estoy usando sql 2005 y tengo que hacer un programa en Java, los datos que me pasan son los siguientes:
Los datos necesarios de las casas son:
dirección.
localidad.
metros cuadrados.
cantidad de ambientes.
precio.
Para los departamentos:
dirección.
piso.
localidad.
cantidad de ambientes.
precio.
antigüedad.
impuestos a pagar por inquilino (abl, luz gas, etc.)
Para los locales comerciales:
localidad.
cantidad de ambientes.
metros cuadrados.
precio
antigüedad.
impuestos a pagar por inquilino (abl, teléfono, inmobiliario, etc).
si se encuentra habilitado o no.
Mi idea principal era hacer una tabla Propiedades con su idPropiedad y un idTipoPropiedad, pero como me estan pidiendo datos especificos y distintos en el que seria mi TipoPropiedad nose como armarlo
Mi primera opcion fue tabla Propiedades: IdPropiedad idTipoPropiedad y cargue todo los tipos de datos de Casa, Depto, Comercial y una tabla IdTipoPropiedades
Mi segunda opcion fue crear 4 tablas, Propiedades, Casas, Deptos, Comerciales.
Y en Propiedades solo tengo el idPropiedad e IdPersona de otra tabla creada, y dentro de los tipos Casas, Deptos, Comerciales tengo su id respectivo y el idPropiedad dentro de cada uno
Código SQL:
Ver originalCREATE TABLE [dbo].[Departamentos](
[id_departamento] [INT] NOT NULL,
[direccion] [VARCHAR](50) NULL,
[piso] [INT] NULL,
[localidad] [VARCHAR](50) NULL,
[cantidadAmbientes] [INT] NULL,
[precio] [INT] NULL,
[antiguedad] [INT] NULL,
[id_impuestosApagar] [INT] NULL,
[id_propiedad] [INT] NULL,
CONSTRAINT [PK_Departamentos] PRIMARY KEY CLUSTERED
(
[id_departamento] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Departamentos] WITH CHECK ADD CONSTRAINT [FK_Departamentos_Propiedades] FOREIGN KEY([id_propiedad])
REFERENCES [dbo].[Propiedades] ([id_propiedad])
GO
ALTER TABLE [dbo].[Departamentos] CHECK CONSTRAINT [FK_Departamentos_Propiedades]
GO
ALTER TABLE [dbo].[Departamentos] WITH CHECK ADD CONSTRAINT [FK_Departamentos_TipoImpuestos] FOREIGN KEY([id_impuestosApagar])
REFERENCES [dbo].[TipoImpuestos] ([id_impuestosApagar])
GO
ALTER TABLE [dbo].[Departamentos] CHECK CONSTRAINT [FK_Departamentos_TipoImpuestos]
CREATE TABLE [dbo].[Comerciales](
[id_comercial] [INT] NOT NULL,
[localidad] [VARCHAR](50) NULL,
[cantidadAmbientes] [INT] NULL,
[metrosCuadrados] [INT] NULL,
[precio] [INT] NULL,
[antiguedad] [INT] NULL,
[id_impuestosApagar] [INT] NULL,
[habilitacion] [INT] NULL,
[id_propiedad] [INT] NULL,
CONSTRAINT [PK_Comerciales] PRIMARY KEY CLUSTERED
(
[id_comercial] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Comerciales] WITH CHECK ADD CONSTRAINT [FK_Comerciales_Propiedades] FOREIGN KEY([id_propiedad])
REFERENCES [dbo].[Propiedades] ([id_propiedad])
GO
ALTER TABLE [dbo].[Comerciales] CHECK CONSTRAINT [FK_Comerciales_Propiedades]
GO
ALTER TABLE [dbo].[Comerciales] WITH CHECK ADD CONSTRAINT [FK_Comerciales_TipoImpuestos] FOREIGN KEY([id_impuestosApagar])
REFERENCES [dbo].[TipoImpuestos] ([id_impuestosApagar])
GO
ALTER TABLE [dbo].[Comerciales] CHECK CONSTRAINT [FK_Comerciales_TipoImpuestos]
CREATE TABLE [dbo].[Casas](
[id_casa] [INT] NOT NULL,
[direccion] [VARCHAR](50) NULL,
[metrosCuadrados] [INT] NULL,
[cantidadAmbientes] [INT] NULL,
[precio] [INT] NULL,
[id_propiedad] [INT] NULL,
CONSTRAINT [PK_Casas] PRIMARY KEY CLUSTERED
(
[id_casa] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Casas] WITH CHECK ADD CONSTRAINT [FK_Casas_Propiedades] FOREIGN KEY([id_propiedad])
REFERENCES [dbo].[Propiedades] ([id_propiedad])
GO
ALTER TABLE [dbo].[Casas] CHECK CONSTRAINT [FK_Casas_Propiedades]
CREATE TABLE [dbo].[Propiedades](
[id_propiedad] [INT] NOT NULL,
[id_persona] [INT] NULL,
CONSTRAINT [PK_Propiedades] PRIMARY KEY CLUSTERED
(
[id_propiedad] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Propiedades] WITH CHECK ADD CONSTRAINT [FK_Propiedades_Personas] FOREIGN KEY([id_persona])
REFERENCES [dbo].[Personas] ([id_persona])
GO
ALTER TABLE [dbo].[Propiedades] CHECK CONSTRAINT [FK_Propiedades_Personas]
Cual es la correcta?
Muchas Gracias
Saludos