їPuedo almacenar todos los datos en una sola base de datos?
#1

Buenas, estoy viendo un par de tutoriales e iba a comenzar a crear mi sistema de registro y todo eso, pero mi duda es que si hay algъn problema si almaceno demasiados datos en una sola base de datos, es decir, si almaceno: nombre, contraseсa, score, muertes, y como 20 cosas mбs.
їPuede causar algъn error almacenar muchas cosas en una sola base de datos?

Desde ya muchas gracias.


EDIT: Perdуn, se me olvidу mencionar que estoy usando SQLite.
Reply
#2

No si lo haces bien, por algo las bases de datos estбn tan popularizadas. Y no interviene que uses SQLite, es la misma estructura, salvo en las funciones que quizб varнen. Separalos por tablas, pero si son variables individules y simples de jugadores como las que tъ dijiste no conviene meterlas en otra, hace tiempo hice un sistema de inventarios y el jugador debнa de tener posibilidad de agrandar el inventario, asн de 10 a 15, de 15 a 25, etc.. El caso es que no iba a crear columnas como: inv1, cantidad1, inv2, cantidad2, serнan demasiadas y nada me asegura que el jugador las use todas.

Creй otra tabla llamada 'Inventario' y al cargar o guardar datos era indexado a los datos del usuario segъn su ID de cuenta, todo funcionу muy bien.
Reply
#3

Quote:
Originally Posted by _Zume
Посмотреть сообщение
No si lo haces bien, por algo las bases de datos estбn tan popularizadas. Y no interviene que uses SQLite, es la misma estructura, salvo en las funciones que quizб varнen. Separalos por tablas, pero si son variables individules y simples de jugadores como las que tъ dijiste no conviene meterlas en otra, hace tiempo hice un sistema de inventarios y el jugador debнa de tener posibilidad de agrandar el inventario, asн de 10 a 15, de 15 a 25, etc.. El caso es que no iba a crear columnas como: inv1, cantidad1, inv2, cantidad2, serнan demasiadas y nada me asegura que el jugador las use todas.

Creй otra tabla llamada 'Inventario' y al cargar o guardar datos era indexado a los datos del usuario segъn su ID de cuenta, todo funcionу muy bien.
Gracias! tengo una dudita mбs para hacer, si no es mucha molestia, їcomo seria para leer los datos de la tabla del jugador?

Hice esto:
PHP код:
CMD:registrar(playeridparams[])
{
    new 
pass[24];
    if(
sscanf(params,"s[24]",pass)) return UsoCorrecto(playerid"/registrar [contraseсa]");
    
/*if(strval(pass) < 3 || strval(pass) > 24) return Error(playerid, "La contraseсa debe ser mayor a 4 y menor de 24.");*/
    
    
new sas[128];
    
format(sassizeof(sas), "INSERT INTO `datos`  (`Nombre`,`Password`) VALUES ('%s', '%s')",NombreJugador(playerid),pass);
    
db_free_result(db_query(usuarios,sas));
    
    new 
asd[64];
    
format(asdsizeof(asd), "{848484}%s ha ingresado al servidor.",NombreJugador(playerid));
    
SendClientMessageToAll(-1asd);
    
SpawnPlayer(playerid);
    
    return 
1;

pero cuando me desconecto y abro la base de datos con DB Browser, me sale vacнa.
Reply
#4

No funciona porque nunca utilizaste la funciуn que envнa la consulta. La funciуn "db_free_result()' se utiliza para liberar el resultado de una consulta.

PHP код:
CMD:registrar(playeridparams[])
{
    new 
string[25];
    if(
sscanf(params,"s[25]"string)) return UsoCorrecto(playerid"/registrar [contraseсa]");
    
    new 
query[108];
    
format(querysizeof(query), "INSERT INTO `datos`  (`Nombre`,`Password`) VALUES ('%q', '%q')",NombreJugador(playerid), string);
    
db_query(usuariosquery);
    new 
formatt[64];
    
format(formattsizeof(formatt), "{848484}%s ha ingresado al servidor."NombreJugador(playerid));
    
SendClientMessageToAll(-1formatt);
    
SpawnPlayer(playerid);
    return 
1;

Eso deberнa funcionar si la base de datos existe.

Edi: Sн utilizas la funciуn que envнa la consulta, pero creo que lo haces de una manera incorrecta, intenta con mi cуdigo
Reply
#5

Crea una funciуn que al spawnear haga esto
AsignarDatosAlJugador(playerid)
{

cache_get_field_content();// esta funcion da a obtener/traer un string o cadena de texto
un ejemplo seria
cache_get_field_content(0, "strPassword", Jugador[playerid][Password], cMySQL, 129);
el 0 es el resultado de la bd, el "strPassword" es el campo que quieres coger de la bd, el Jugador[playerid][Password] es el valor que quieres que contenga este valor traido de la bd, el 129 es el tamaсo o caracteres que quieres que contenga.
PARA TRAER UN VALOR ENTERO ES DIFERENTE SE ULTILIZA ESTA FUNCION:
cache_get_field_content_int();
Un ejemplo seria:
Jugador[playerid][Score] = cache_get_field_content_int(0, "intScore");
el Jugador[playerid][Score] es el valor que quieras que contenga el valor traido, el 0 es el resultado de la bd, el "intScore" es el que campo que quieres coger de la bd!

return 1;
}
Reply
#6

Quote:
Originally Posted by Miguelito9801
Посмотреть сообщение
Crea una funciуn que al spawnear haga esto
AsignarDatosAlJugador(playerid)
{

cache_get_field_content();// esta funcion da a obtener/traer un string o cadena de texto
un ejemplo seria
cache_get_field_content(0, "strPassword", Jugador[playerid][Password], cMySQL, 129);
el 0 es el resultado de la bd, el "strPassword" es el campo que quieres coger de la bd, el Jugador[playerid][Password] es el valor que quieres que contenga este valor traido de la bd, el 129 es el tamaсo o caracteres que quieres que contenga.
PARA TRAER UN VALOR ENTERO ES DIFERENTE SE ULTILIZA ESTA FUNCION:
cache_get_field_content_int();
Un ejemplo seria:
Jugador[playerid][Score] = cache_get_field_content_int(0, "intScore");
el Jugador[playerid][Score] es el valor que quieras que contenga el valor traido, el 0 es el resultado de la bd, el "intScore" es el que campo que quieres coger de la bd!

return 1;
}
Pero eso no es de MySQL?

A mi me gustarнa saber como hacer para comprobar si un string existe en la tabla.
Reply
#7

Amigo, aunque ya te dijeron como hacerlo quiero aclarar que las bases de datos SQL estбn diseсadas para mucha informaciуn, puedes tener cientos de columnas en una tabla sin problemas. La verdad, casi nunca se requieren tanta ya que existen maneras de hacerlo mбs eficaz y dinбmico como mencionу SickAttack.
Reply
#8

Quote:
Originally Posted by admantis
Посмотреть сообщение
Amigo, aunque ya te dijeron como hacerlo quiero aclarar que las bases de datos SQL estбn diseсadas para mucha informaciуn, puedes tener cientos de columnas en una tabla sin problemas. La verdad, casi nunca se requieren tanta ya que existen maneras de hacerlo mбs eficaz y dinбmico como mencionу SickAttack.
Vale, muchas gracias.


їLo de Miguelito no es MySQL?
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)