sql >> Base de Datos >  >> RDS >> Mysql

MySQL - Organización del contenido de la base de datos (liga deportiva)

Ay. Has asumido un gran trabajo. ¿Estás absolutamente seguro de que nada de lo que vas a hacer no puede ser hecho por algo que ya está disponible? Bueno, si estás seguro, sigue leyendo.

En primer lugar, la parte más difícil de lo que quiere hacer es administrar su acceso de usuario. Le aconsejo que comience escribiendo su módulo de administración de usuarios antes de continuar.

Para lo que desea, parece probable que Drupal o uno de los otros sistemas CMS senior sería una excelente manera de arrancar el sistema. Drupal se encargará de la administración de usuarios desde el primer momento (o con problemas mínimos) y podría escribir el resto de su código como nodos estáticos. Esto también facilita agregar blogs, foros, noticias y administrar listas de correo, etc.

Como se indica en los comentarios anteriores, es necesario mantener sus datos juntos. sería bueno guardar datos para comparaciones históricas también.

Si no extiende un CMS, después de que haya regresado del psiquiatra, necesitará algo como:

  1. archivo de encabezado para acceder a la base de datos y verificar la autenticación del usuario.

  2. archivo de pie de página para mostrar sus datos

  3. archivos de páginas individuales para presentar u obtener sus datos.

La estructura de la base de datos para el manejo de los usuarios (como mínimo) debe ser IRO:

Person - details of individual users
username - link person to a username
email - email addresses
club - sports club details
password - passwords
logon - record of logon attempts
role - record of role of individuals in your site
permissions - list of required permissions to access areas of the site
role_permissions - default permissions for each role
person_role - link person to role
person_permissions - link person to permissions (only needed if some individuals need extra permissions not given routinely by their role)
club_person; person_email; - link people to clubs and to their email addresses.

Para gestionar las coincidencias necesitarás:

team - team name, group and club reference
grouping - list of groups eg by age.  
divisions. - list of divisions
venue - list of venues.  Include GPS!!!
match - division, grouping, team1, team2, venue, date, time
result - team1 reported result, team 2 reported result, approved result (you may need to intervene!) match.

Como puede ver, necesita algunas mesas, pero NO DEBE intentar hacer cosas divertidas con los equipos reales HASTA que su acceso de usuario funcione correctamente.

Lo que he esbozado para ti es una base de datos en forma normal. No se duplican datos textuales y los datos son fáciles de recuperar, indexar y mostrar. Siento que esta pregunta es demasiado amplia para SO, ya que diseñar una base de datos para usted está un poco fuera de alcance, pero creo que el formato general es útil.

Cada tabla solo debe contener datos únicos necesarios, por ejemplo:

Person:  personid int, surname, forename, style, whenadded, whoadded, inuse
email:   emailid, email, whenadded, whoadded, inuse
email_person:  emailpersonid,emailid,personid, whenadded,whoadded,inuse

Esto permite que varias personas compartan un correo electrónico y que se apliquen varios correos electrónicos a una persona sin duplicación de texto. Los ID deben escribirse INT AUTO_INCREMENT PRIMARY KEY en lugar de SERIAL, ya que esto ahorra mucho espacio de almacenamiento y nunca completará un INT en esta aplicación.

Las otras tablas deben crearse de la misma manera. Las columnas whoadded y whenadded son opcionales y consumen bastante espacio de almacenamiento, pero pueden ser muy útiles. inuse es esencial, establezca esto en BOOL y puede eliminar equipos sin eliminarlos; los datos no se pierden. Un whenremoved y whoremoved también es útil para la auditoría.

Una palabra sobre las contraseñas:asegúrese de almacenarlas como HASH SALADO. Si hace esto, cuando su sitio sea pirateado, nadie tendrá expuesta la contraseña que también usa para su banca por Internet. La gente suele ser idiota. Tienes que cuidarlos.

Como dije, un poco fuera del alcance, así que terminaré la respuesta allí:le brinda, según lo solicitado, el esquema básico de un 4th Normal Form Db que será robusto y extensible, pero lo deja a usted para hacer el trabajo. ¿Por qué no hacer más preguntas si el problema resulta ser demasiado difícil?

Buena suerte.

AÑADIDO:

Marco de bricolaje:

Si no desea aprender a usar uno de los marcos o CMS existentes, deberá escribir uno propio. Curiosamente, esto es realmente muy fácil.

encabezado.php:

<?PHP
$mysqli=new mysqli(credentials....)//connect to database and present a mysqli or pdo object.
session_start(); //open a session
//you will need to authenticate your session here - see below
?>

pie de página.php:

<HTML>
<HEAD>
<TITLE>
<?PHP echo $pagetitle;?>
</TITLE>
</HEAD>
<BODY>
<?PHP echo $content;?>
</BODY>
</HTML>

Estos son utilizados por mypage.php:

<?PHP
require("header.php");
//do some stuff that generates $content
$pagetitle="mypage.php";
require("footer.php:);
?>

Se debe enfatizar que esto es lo mínimo que necesitará y es realmente desagradable:solo se presenta para mostrar cómo se debe comenzar esto, no como un ejemplo de código ideal. Sin embargo, funcionará.

La clave es crear un encabezado que presente las variables que necesitará, como una conexión de base de datos, nombre de usuario, estado de inicio de sesión del usuario, etc. y un pie de página en el que pueda ingresar detalles para presentar los datos. El pie de página es el único lugar donde combina HTML y PHP.

Use su $_SESSION para almacenar información que debe persistir entre páginas.

Estos archivos pueden ser tan simples o complejos como desee:creé los míos hace años que realizan varias comprobaciones en el usuario y la sesión y pueden mostrar scripts, archivos CSS personalizados y demás en el pie de página. No es difícil de hacer si comienzas de manera simple y desarrollas según lo necesites. SO estará aquí para ayudarte.

Una palabra de advertencia:aunque puede comenzar de manera muy simple, lo que está tratando de hacer tiene piernas y se saldrá de control. Por favor, audite su código después de tenerlo en funcionamiento para asegurarse de que no ha incluido inadvertidamente fallas de seguridad. Es muy fácil incluirlos a medida que ingresa a un proyecto y necesita una solución rápida y pueden ser endiabladamente difíciles de detectar más adelante a menos que los esté buscando.