xelanorth
Posts : 8 Join date : 2016-11-28
| Subject: [SQL]Scripts login Fri Dec 09, 2016 7:48 am | |
| - Quote :
- 'CREATE TABLE `gameuser` (
`nick` varchar(45) NOT NULL, `pwd` varchar(20) NOT NULL, `rol` varchar(1) NOT NULL DEFAULT ''P'', `correo` varchar(50) NOT NULL, `codCountry` varchar(3) NOT NULL, PRIMARY KEY (`nick`), KEY `Pais_pk` (`codCountry`), CONSTRAINT `Pais_pk` FOREIGN KEY (`codCountry`) REFERENCES `country` (`codcountry`) NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8'
CREATE TABLE `country` ( `codcountry` varchar(3) NOT NULL, `desCountry` varchar(40) NOT NULL, `desCountryENG` varchar(50) DEFAULT NULL, PRIMARY KEY (`codcountry`), UNIQUE KEY `codcountry` (`codcountry`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
'CREATE TABLE `player` ( `nick` varchar(45) NOT NULL, `gender` varchar(1) NOT NULL, KEY `Player_Pk` (`nick`), CONSTRAINT `Player_Pk` FOREIGN KEY (`nick`) REFERENCES `gameuser` (`nick`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8' ALTER TABLE Player ADD CONSTRAINT Player_pk UNIQUE(nick);
Cierro el hilo por que este será el script definitivo. Hago una explicación para la gestión y futura expansión de la BD al resto del juego. La tabla padre GameUser utiliza como clave principal el nombre del personaje. Guarda todos los datos necesarios para el registro menos el género. En el caso especial de la columna 'codCountry', pensando en la futura traducción del juego y en la repetición de campos, se implementa la tabla del mismo nombre. Esta tiene 3 campos (y por cada nueva traducción del juego debería tener otro más). La Primary key es un código de 3 letras (por ejemplo, para la fila correspondiente a españa sería 'ESP') que está representado en la tabla 'GameUser' como 'codCountry'. Cada código tendrá el nombre del país en cada traducción disponible (en este caso las columnas desCountry = español desCountryENG = inglés), de forma que se desplegara una de estas columnas cuando toque seleccionar de que país eres (dependiendo del idioma en el que juegues) y el código de país será siempre el mismo sin necesidad de crear nuevas filas Por último la tabla hija de 'GameUser', 'Player', tendrá aparte del nick como clave foranea, el género del personaje. Posteriormente se pueden añadir aquí columnas para otros datos (como el dinero del personaje al cambio de turno o la fecha de registro o ultimo acceso). Las relaciones 'Country'-->'GameUser'-->'Player' están con NO ACTION\DELETE ON CASCADE ENABLE es decir, no se puede borrar una fila de Country si el codCountry esta en alguna fila de GameUser y si se borra una fila de usuario se borrará la correspondiente en Player. (Habrá que hacer unos inserts en la tabla Country, y a la hora de registrar se inserta tanto en Player como en GameUser).
Last edited by xelanorth on Sat Dec 10, 2016 10:34 pm; edited 1 time in total | |
|
xelanorth
Posts : 8 Join date : 2016-11-28
| Subject: Re: [SQL]Scripts login Fri Dec 09, 2016 7:49 am | |
| | |
|
xelanorth
Posts : 8 Join date : 2016-11-28
| Subject: Re: [SQL]Scripts login Sat Dec 10, 2016 10:37 pm | |
| Se añade la sentencia 'ALTER TABLE Player ADD CONSTRAINT Player_pk UNIQUE(nick);' Para evitar duplicados de nick en la tabla Player. | |
|
Sponsored content
| Subject: Re: [SQL]Scripts login | |
| |
|