Comunidad de diseño web y desarrollo en internet online

PHP y mysql. ¿Como crear una base de datos?

Citar            
MensajeEscrito el 23 Ago 2007 06:12 pm
Buenas.
Pues resulta que quiero hacer una web en la cual se registren unos usuarios. Por eso había pensado crear una base de datos con una tabla donde me pongan unas cosas generales de esos usuarios. Pero tengo un problema. El caso es que como son tan diversas las opciones que voy a guardar sobre esos usuarios, había pensado poner unas cosas generales en 1 base de datos general q ya he creado con mysql y el resto en otra base de datos con 3 tablas. Lo que pasa es que para eso debería de crear la base de datos al registrarse un usuario nuevo mediante php pero no consigo encontrar ningun ejemplo por la red. ¿Es posible lo que yo digo? Es que las características del usuario ocuparan mucho y claro me da cosa ponerlo todo en una base de datos porque si se accede mucho y se convierte en una base de datos enorme... como tenga un problema o vaya lento.... para solucionarlo :? porque casi todos los días se irán añadiendo datos acerca de cada usuario....
Bueno en resumen, lo que quiero es crear una base de datos mysql con php. ¿Es esto posible? ¿Saben como hacerlo? ¿Alguna idea? ¿Debería de cambiar la estructura de las bases de datos? esq es para hacer una web al estilo http://www.fotolog.com .... :wink:
Muchas gracias :wink:

Por Anonimo2007

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Ago 2007 06:22 pm
No entendi muy bien para que queres crear una base de datos. Pensas crear una base de datos para cada usuario? No es mucho?
No se realmente cuantos datos pensas agregar a las tablas.
Una alternativa seria tener una base para datos generales de tu sistema y una base con los usuarios, y en esa base vas armando tablas relacionadas para facilitar el manejo de los datos y que no este todo junto ni sea todo tan complicado. En ese caso supongo que no necesitas crear una base de datos por PHP, sino que ya tendrias todo armado y lo unico que haces por PHP seria insertar, modificar o borrar datos.

Saludos

Por PabloHdS

251 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Ago 2007 10:43 pm
Es mucho una base de datos por usuario :? ? Bueno es que soy nuevo en esto no sé. Pero si hago como tu me dices, no habrá problemas de lectura/escritura? quiero decir imaginate que tiene exito y tengo 20 millones de usuarios (caso hipotético claro :lol: ) pues si por cada usuario tengo 3 tablas y una de ellas es para los comentarios del libro de visitas y son 20 por día máximo pues ya sólo con eso pedazo base de datos que se me crea no? Bueno probaré como tu me dices :wink:

Por Anonimo2007

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Ago 2007 11:17 pm
En Organización de Bases de Datos hay una técnica que se llama normalización de las bases de datos que permite resolver el problema que estás planeando. Básicamente consiste en identificar las entidades del sistema (usuario, cometario, sitio, etc...), asignarle una clave y agregar los campos que se requieren, luego se procede a establecer las relaciones entre las entidades eliminado los campos duplicados.

Por ejemplo, un usuario tiene un nombre de usuario. Un comentario también ¿repites el nombre en el comentario?, pues no, mejor pones la clave del usuario y cuando haces la lectura te sirve para extraer el nombre del usuario a partir de la clave. Eso se llama "relación". Impide que pasen cosas como que el usuario se cambie de nombre y tengas que buscar todos los comentarios de ese usuario para acutalizarlo.

Otro ejemplo, un sitio, que es una entidad, tiene un dueño, que es un usuario, otra entidad, relacionas esas entidades mediante sus claves primarias. Si un usuario tene más de un sitio, ese campo se llama "grupo repetitivo" o "relación uno a muchos", y esto genera otra entidad con dos claves, la del usuario y la del sitio que posee.

El tema en sí mismo es complejo y requiere tiempo y habilidad para normalizar una base de datos de acuedo a las necesidades del sistema.

Te aconsejo que tomes una hoja de papel en blanco, un bolígrafo y comiences a hacer cuadros y flechas, te ahorrará dolores de cabeza luego cuando te encuentres con serios problemas de diseño en la base de datos.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 Ago 2007 02:06 am
Bueno pues después de pensar y pensar y pensar....... he llegado a la siguiente conlusión, la cual indico en esta foto: http://img393.imageshack.us/img393/1497/sinttulo1copiaxd4.jpg Esta sería mi 1 posiblidad. Al crear el usuario la base de datos usuario se copiaría todo(vamos copiar y pegar archivos mediante php) y después ya rellenaría y su nombre seria sustituido por el de la id de la tabla general de la base de datos principal.
Ventajas:
- No creo que tuviese nunca relantizaciones por causa de baso de datos.
Desventajas:
- Manejar 2 base de datos con usuarios loggeados creo q es un poco chungo :lol:

Mi segunda opción es lo mismo pero todas las tablas de usuario las meto dentro de principal.db y cambio le nombre de las tablas por nombretabla_ID
Ventajas:
- Todo juntito menos lío
Desventajas:
- ¿Posible relantización si llegan a ver muchos usuarios? Se supone que en la tabla comentarios puede haber un máximo de 20 registros por día que se haya actualizado...

Bueno pues estoy con este dilema. ¿Qué me aconsejáis? Muchas gracias
PD. Con estas horaas ya medio sobado se me olvidaba :lol: eso q hay a la derecha en naranja escrito a mano era un poco la estructura jeraarquica de la web por si la necesitábais + o - loq pasa q ya me cansé de rayas y texto y cojí el pincel y bueno ya se vé el resultado.

Por Anonimo2007

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ago 2007 07:18 am
¿Dos bases de datos?, no lo creo necesario.
Veamos, cada usuario tiene un ID (identificador único), un usuario puede tener más de una foto ¡grupo repetitivo!, relación de uno a muchos. Acá ya tenemos dos tablas, una de usuarios y otra de fotos. El índice de usuarios sería su ID, el índice de las fotos sería su el ID de usuario y el ID de la foto.
De esta forma a la pregunta ¿qué fotos le corresponden al usuario X?, no es más que sacar de la tabla fotos todos los registros cuyo ID de usuario sea igual a X.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 Ago 2007 03:56 pm
O sea que tu me dices q meta todas las fotos de todos los ususrios en una tabla y entonces haga una consulta para sacar las de x usuario? ¿O me estás diciendo otra cosa? y no sería mejor la segunda opción? :o

Muchas gracias :wink:

Por Anonimo2007

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ago 2007 07:19 pm
¿Las fotos en una tabla?, no, las fotos (los archivos de imágenes) no tienen por qué estar dentro de la tabla, basta con poner la dirección (path) hacia el archivo de imagen.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 Ago 2007 10:32 pm
hombre claro, sólo faltaría eso más peso para la tabla :shock: pero era una forma de hablar, me refiero a las path de las fotos, ¿entonces sigo tal como tu dices? :? Es decir una tabla como la de yo pero que meto información de todos los usuarios, agregando el campo ID para después hacer una consulta?
Muchas gracias :wink:

Por Anonimo2007

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ago 2007 11:57 pm
Al menos así pienso que quedaría la base de datos correctamente normalizada. Si quieres que te haga el análisis completo deberías enviarme una exposición de tu proyecto. Por correo.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 30 Ago 2007 12:14 am
¿A que te refieres con "exposición"? ¿De que va mi web, que voy añadir y las cosas que necesito en mi bsae de datos?

Por Anonimo2007

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ago 2007 08:40 pm
Sí, vamos, la idea general acerca de tu página, es para tratar de identificar las entidades, sus propiedades y relaciones y así armar un [url=http://es.wikipedia.org/wiki/Modelo_entidad-relación]DER[/url], normalizar las bases de datos, en fin, hacer el trabajo de análisis de sistema.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.