Bases de Datos - mejor opción Modelado sistema de documentos

 
Vista:

mejor opción Modelado sistema de documentos

Publicado por stardust (1 intervención) el 09/02/2017 20:39:11
Hola es la primera vez que escribo, haciendo un ejercicio de modelado para una base de datos en mysql me surgió la siguiente duda :

Teniendo en cuenta los siguientes campos de la tabla DOCUMENTO:
-Id
-tipo de documento
-lugar
-fecha
-asunto
-destinatario
-emisor
-clasificación
-descripción

Lo que se deben almacenar en la base de datos son documentos de diferentes tipos : oficios, cartas, volantes , tarjetas informativas , por mencionar algunos , hasta ahora tengo pensando en almacenar todos esos datos en una mism tabla ya que la mayoria de los datos se comparten , sin embargo hay algunos documentos como (volantes o tarjetas) que no llevan los campos como emisor o clasificación por lo que se procederia a poner null en estos .

Me gustaria que dejaran su opinion al respecto, si es buena idea manejarlo con una tabla, por que la mayoria de los campos se comparten o trabajarlos por tablas separadas por los pocos campos que tienen de diferencia.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 93
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

mejor opción Modelado sistema de documentos

Publicado por xve (107 intervenciones) el 10/02/2017 08:18:48
Hola stardust, yo creo que es la mejor solución utilizar una sola tabla, aunque haya campos que queden vacíos... no hay problema. Es mucho mas liado, gestionar varias tablas si tienes que hacer algún tipo de búsqueda en todas ellas.

Creo que la opción que propones es la correcta!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

mejor opción Modelado sistema de documentos

Publicado por SuperIndio (1 intervención) el 10/03/2017 14:58:44
No solo estoy de acuerdo de poner todo en una misma tabla
sino que ademas, me parece que la columna Id está demas, me parece que lo que define
como distincion es el 'tipo de documento' que no solo seria la clave
que ademas es un dato que esta relacionado con la entidad Documento
no es recomendable andar poniendo Id a todo, llevo 25 años con DDL Y MDL
para que te quede claro

tengo que definir la tabla Clientes
que es lo que le hace distinto a todos es clave, todos diriamos
el documento, pero supongamos que alguien es extranjero u tiene el mismo
numero de pasaporte que un documento de este pais, ahi se rompe la regla
para eso si es necesario in Id_Cliente o un codigo que es un dato externo a la entidad pero es necesario
ponerlo para buscar una distincion y cumplir con una de las formas normales

Otras ya hay algo casi definido globalmente supongamos tengo que definir la tabla Divisas
para ello mundialmente ya se difinio el codigo ISO de divisas, pero cada pais tiene internamente su definicion

CODIGO ISO
DESCRICPCION
RANGO DECIMAL
PLAZA FINANCIERA
CODIGO BCRA
BLABLA
BLEBLE

Otra recomendacion y eso queda muy a criterio de cada uno
En todo que lo que yo defino jamas dejo que los campos posean nulos, para un posterior mejor manipulacion
dentro de una heramienta SQL y tambien facilitar la tarea al programador desde un lenguaje externo
imaginate el kilombo que genera o lo engorroso que es para el programador
tener que andar verificando o usando funciones cuando un campo posee null.
Para ello uso
1
2
3
4
5
6
7
8
9
10
Create table TDocumen (
Tipo           Samllint     Not Null With Default 0  , -- TIPO de documento
Decripcion     Varchar (30) Not Null With Default ' ', -- Descripción
Lugar          Varchar (30) Not Null With Default ' ', -- Lugar
Fecha          Varchar (08) Not Null With Default ' ', -- Fecha (YYYYMMDD)
Asunto         Varchar (08) Not Null With Default ' ', -- Asunto
Destinatario   Varchar (40) Not Null With Default ' ', -- Destinatario
Emisor         Varchar (40) Not Null With Default ' ', -- Emisor
Clasificacion  Char    (04) Not Null With Default ' ', -- Clasificación
Primary Key( Tipo ) ) ;

En algunos RDMS o

1
2
3
4
5
6
7
8
9
10
Create table TDocumen (
Tipo           Samllint     Not Null Default 0  , -- TIPO de documento
Decripcion     Varchar (30) Not Null Default ' ', -- Descripción
Lugar          Varchar (30) Not Null Default ' ', -- Lugar
Fecha          Varchar (08) Not Null Default ' ', -- Fecha (YYYYMMDD)
Asunto         Varchar (08) Not Null Default ' ', -- Asunto
Destinatario   Varchar (40) Not Null Default ' ', -- Destinatario
Emisor         Varchar (40) Not Null Default ' ', -- Emisor
Clasificacion  Char    (04) Not Null Default ' ', -- Clasificación
Primary Key( Tipo ) ) ;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar