Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Duda creacion tablas

Estas en el tema de Duda creacion tablas en el foro de Mysql en Foros del Web. Tablas hola gente... tengo algunas dudas... tengo las siguientes tablas: Tabla Articulos @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original CREATE TABLE `articulos` (   `idArticulo` int ...
  #1 (permalink)  
Antiguo 13/05/2013, 10:42
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 3 meses
Puntos: 22
Duda creacion tablas

Tablas

hola gente... tengo algunas dudas... tengo las siguientes tablas:

Tabla Articulos
Código MySQL:
Ver original
  1. CREATE TABLE `articulos` (
  2.   `idArticulo` int(11) NOT NULL AUTO_INCREMENT,
  3.   `idAutor` int(11) NOT NULL,
  4.   `tituloArticulo` varchar(50) DEFAULT NULL,
  5.   `resumenArticulo` varchar(500) DEFAULT NULL,
  6.   `coautoresArticulo` varchar(500) DEFAULT NULL,
  7.   `imagenArticulo` varchar(50) DEFAULT NULL,
  8.   `pdfArticulo` varchar(200) DEFAULT NULL,
  9.   `estadoArticulo` int(11) DEFAULT '1',
  10.   `idVolumen` int(11) DEFAULT '0',
  11.   PRIMARY KEY (`idArticulo`),
  12.   KEY `idUsuario` (`idUsuario`),
  13.   KEY `idEstado` (`estadoArticulo`),
  14.   KEY `idVolumen` (`idVolumen`),
  15.   CONSTRAINT `articulos_ibfk_1` FOREIGN KEY (`idAutor`) REFERENCES `usuarios` (`idUsuario`) ON DELETE CASCADE,
  16.   CONSTRAINT `articulos_ibfk_2` FOREIGN KEY (`estadoArticulo`) REFERENCES `estados` (`idEstado`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  17.   CONSTRAINT `articulos_ibfk_3` FOREIGN KEY (`idVolumen`) REFERENCES `volumenes` (`idVolumen`) ON DELETE NO ACTION ON UPDATE NO ACTION

Tabla Usuarios

Código MySQL:
Ver original
  1. CREATE TABLE `usuarios` (
  2.   `idUsuario` int(11) NOT NULL AUTO_INCREMENT,
  3.   `nickUsuario` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  4.   `contrasUsuario` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  5.   `nombreUsuario` varchar(20) NOT NULL,
  6.   `apellidosUsuario` varchar(20) NOT NULL,
  7.   `emailUsuario` varchar(40) NOT NULL,
  8.   `nivelUsuario` int(11) NOT NULL DEFAULT '6',
  9.   PRIMARY KEY (`idUsuario`)

Veamos en teoria la unica diferencia entre los usuarios es su nivel, pueden ser EditoresJefe, Editores, Revisores o Autores.

Un Articulo puede tener 0 ó 1 Editor
Un Editor puede tener 0 ó N Articulos

Un Articulo puede tener 0 ó N Revisores
Un Revisor puede tener 0 ó N Articulos

Un Artículo solo puede tener 1 Autor
Un Autor puede tener N Articulos

Me estoy haciendo un lío porque nose si mi idea es correcta...
El el caso de Articulos-Revisores se que tengo q crear una tabla intermedia.
Como se puede ver en el caso de Autores-Articulos he creado en la tabla Articulos una clave idAutor.

Debocrear tambien una clave ajena en el caso de Editores-Articulos?? Me faltan tablas?? O esta correcto.
  #2 (permalink)  
Antiguo 13/05/2013, 11:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda creacion tablas

rgf1987,
tienes que darnos más datos, porque nada nos dices sobre si el tipo va vinculado al usuario, o una persona puede ser autor y revisor, o el editor puede hacer de revisor, o si un revisor puede ser autor. Eso es previo, creo.
  #3 (permalink)  
Antiguo 13/05/2013, 12:28
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 3 meses
Puntos: 22
Respuesta: Duda creacion tablas

Veamos... estoy haciendo una pagina web, que se trata de una revista online.

Entonces, existen los siguientes elementos, y cada uno es representado por una tabla en la base de datos:

Noticias: que es informacion que solamente el EditorJefe puede realizar.
Volumenes: son conjuntos de articulos que el EditorJefe se encarga de emitir, cuando hay un nº de articulos disponible y el EditorJefe lo cree conveniente, crea un volumen con ellos y entonces el nuevo volumen y sus articulos pueden ser visualizados por los usuarios en la web.
Articulos: son reportajes que ciertos usuarios con privilegios pueden subir a la web, posteriormente son revisados, aceptados o rechazados.
Estados: representan la situacion en la que se encuentra un articulo, (No revisado, En revision, Revisado, Aceptado)
Revisiones: ciertos usuarios se encargan de revisar articulos y en funcion de dicha revisor el articulo es aceptado o rechazado.
Usuarios: existen 4 tipos:

Autores: pueden subir articulos a la web, y ver los articulos que han subido y el estado en el que se encuentran.
Revisores: pueden realizar las funciones de Autor y además reciben solicitudes de revision (los editores envian solicitudes a los revisores para que revisen un articulos y estos pueden aceptar la revision o rechazarla)
Editores: pueden realizar las funciones de Autor y Revisor, pueden solicitar la revision de los articulos a los Autores.
EditorJefe: puede realizar todas las tareas, ademas puede crear volumenes.
Es el encargado de asignar los articulos a los editores para que estos posteriormente soliciten la revision.

Un ejemplo...

Los autores suben los articulos.
El editor jefe accede a la lista de articulos sin revisar, asigna un articulo a un editor(cada articulo es controlado por un unico editor).
El editor solicita la revision a los revisores que el considere aptos para ello y decide en funcion de dichas revisiones si acepta o no el articulo.
El articulo pasa a ser Aceptado y se almacena para que el EditorJefe cuando lo considere oportuno cree un volumen.
  #4 (permalink)  
Antiguo 13/05/2013, 13:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda creacion tablas

una pregunta más sobre el editorjefe. ¿Su figura es única y uno sustituye a otro en un momento determinado o quieres guardar un histórico con fecha de inicio en puesto y fin; o no te interesa histórico alguno, sino solo quién es editorjefe en el presente?
  #5 (permalink)  
Antiguo 13/05/2013, 15:00
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 3 meses
Puntos: 22
Respuesta: Duda creacion tablas

No entendi muy bien a lo que te refieres.

Pero no, no me interesa de momento guardar un historico.
El editorJefe es unico, solo puede haber uno. Es algo así como el administrador de la web, pero realizando ademas las funciones que mencione anteriormente.
  #6 (permalink)  
Antiguo 14/05/2013, 03:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda creacion tablas

Pues yo crearía una tabla para tiposusuarios
tpUsuario
PKtpUsuario, tpUsuario
aquí editorjefe, editor, revisor y autor (los tipos)

otras de usuariostipos
usuariotipo
PKusuarioTipo, FKusuario, FKtpUsuario

aquí incluyo el editorjefe como editorjefe, como editor, como revisor y como autor, y lo mismo con los editores, luego están las personas que solo son una cosa, y estarían en un único registro.

usuariotipoarticulo
PKusaurioTipoArticulo, FKusuarioTipo, FKarticulo

Naturalmente, también en lugar de esta última tabla podrías tener una tabla como esta:
usauriotipoarticulo
PKusuarioTipArticulo, FKusuario, FKTipo, FKarticulo

al recoger en una única tabla todos los tipos relacionados con artículo, no podrás ejercer el control mediante un índice único (compuesto) para que solo un editor o un autor puedan asignarse a un artículo. Tendrás que hacerlo mediante programación. Podrías crear tablas específicas, pero yo prefiero controlar con programación eso y tenerlos todos juntos. El tema de los volúmenes es otra historia. Ahí si es necesaria una tabla volumenes con los artículos, y luego una tabla volumeneseditor.
Dinos cómo lo ves.
Seguro que hay estructuras mejores, pero esta cubre tus necesidades, aunque el control sobre los únicos debes ejercerlo con programación y no mediante índices unique o PK compuestas. Los técnicos darán su opinión, más fundada seguro que la mía.
  #7 (permalink)  
Antiguo 14/05/2013, 09:31
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 3 meses
Puntos: 22
Respuesta: Duda creacion tablas

Cita:
Iniciado por jurena Ver Mensaje
Pues yo crearía una tabla para tiposusuarios
tpUsuario
PKtpUsuario, tpUsuario
aquí editorjefe, editor, revisor y autor (los tipos)

usuariotipoarticulo
PKusaurioTipoArticulo, FKusuarioTipo, FKarticulo
Esa era mi idea principal, asi que la mantendre.
Gracias por tu propuesta.. si alguien mas quiere opinar, acepto ideas :)

Etiquetas: tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:43.