Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - Organisation du contenu de la base de données (Sports League)

Aie. Vous avez entrepris un gros travail. Êtes-vous absolument sûr que rien de ce que vous allez faire ne peut être fait par quelque chose qui est déjà disponible ? Eh bien, si vous êtes sûr, lisez la suite.

Tout d'abord, la partie la plus difficile de ce que vous voulez faire est de gérer votre accès utilisateur. Je vous conseille de commencer par écrire votre module de gestion des utilisateurs avant d'aller plus loin.

Pour ce que vous voulez, il semble probable que Drupal ou l'un des autres systèmes CMS seniors serait un excellent moyen de démarrer le système. Drupal gérera votre gestion des utilisateurs dès la sortie de la boîte (ou avec un minimum de problèmes) et vous pourrez écrire le reste de votre code sous forme de nœuds statiques. Cela facilite également l'ajout de blogs, de forums, d'actualités et la gestion de listes de diffusion, etc.

Comme indiqué dans les commentaires ci-dessus, vous devez conserver vos données ensemble. il serait également bon de conserver les données pour les comparaisons historiques.

Si vous ne prolongez pas un CMS, après votre retour du psychiatre, vous aurez besoin de quelque chose comme :

  1. fichier d'en-tête pour accéder à la base de données et vérifier l'authentification de l'utilisateur.

  2. fichier de pied de page pour afficher vos données

  3. des fichiers de page individuels pour présenter ou obtenir vos données.

La structure de la base de données pour gérer les utilisateurs (au minimum) doit être 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.

Pour gérer les correspondances, vous aurez besoin :

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.

Comme vous pouvez le constater, vous avez besoin de quelques tables, mais VOUS NE DEVEZ PAS essayer de faire des choses amusantes avec les équipes réelles TANT QUE votre accès utilisateur ne fonctionne pas correctement.

Ce que j'ai esquissé pour vous est un db sous forme normale. Aucune donnée textuelle n'est dupliquée et les données sont faciles à récupérer, indexer et afficher. Je pense que cette question est trop large pour SO car concevoir une base de données pour vous est un peu hors de portée, mais je pense que le format général est utile.

Chaque tableau ne doit contenir que des données nécessaires uniques, par exemple :

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

Cela permet à plusieurs personnes de partager un e-mail et à plusieurs e-mails d'être appliqués à une seule personne sans duplication de texte. Les identifiants doivent être de type INT AUTO_INCREMENT PRIMARY KEY plutôt que SERIAL car cela permet d'économiser beaucoup d'espace de stockage et vous ne remplirez jamais un INT dans cette application.

Les autres tables doivent être créées de la même manière. Les colonnes whoadded et whenadded sont facultatives et gourmandes en stockage, mais peuvent être très utiles. inuse est essentiel, définissez ceci sur un BOOL et vous pouvez supprimer des équipes sans les supprimer - les données ne sont pas perdues. Un whenremoved et whoremoved sont également utiles pour l'audit.

Un mot sur les mots de passe - assurez-vous de les stocker sous forme de hachage salé. Si vous faites cela, lorsque votre site sera piraté, personne ne verra le mot de passe qu'il utilise également pour ses opérations bancaires sur Internet. Les gens sont souvent idiots. Vous devez prendre soin d'eux.

Comme je l'ai dit, un peu hors de portée, je vais donc terminer la réponse ici - cela vous donne, comme demandé, les grandes lignes d'une 4e forme normale Db qui sera robuste et extensible mais vous laisse faire le travail. Pourquoi ne pas poser plus de questions si le problème s'avère trop difficile.

Bonne chance.

AJOUT :

Cadre de bricolage :

Si vous ne voulez pas apprendre à utiliser l'un des frameworks ou CMS existants, vous devrez écrire le vôtre. Bizarrement, c'est en fait très facile.

header.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
?>

pied de page.php :

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

Ceux-ci sont utilisés par mypage.php :

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

Il convient de souligner que c'est le strict minimum dont vous aurez besoin et qu'il est vraiment nul - il est juste présenté pour montrer comment cela doit être commencé, pas un exemple de code idéal. Cela fonctionnera cependant.

La clé est de créer un en-tête qui présente les variables dont vous aurez besoin, telles qu'une connexion à la base de données, un nom d'utilisateur, l'état de connexion de l'utilisateur, etc. et un pied de page dans lequel vous pouvez entrer des détails pour présenter les données. Le pied de page est le seul endroit où vous combinez HTML et PHP.

Utilisez votre $_SESSION pour stocker des informations qui doivent persister entre les pages.

Ces fichiers peuvent être aussi simples ou complexes que vous le souhaitez - j'ai créé mes propres fichiers il y a longtemps qui effectuent plusieurs vérifications sur l'utilisateur et la session et peuvent afficher des scripts, des fichiers CSS personnalisés et autres dans le pied de page. Ce n'est pas difficile à faire si vous commencez simplement et construisez selon vos besoins. SO sera là pour vous aider.

Un mot d'avertissement :bien que vous puissiez commencer très simplement, ce que vous essayez de faire a des jambes et deviendra incontrôlable. Veuillez vérifier votre code une fois qu'il est opérationnel pour vous assurer que vous n'avez pas inclus par inadvertance des failles de sécurité. Il est très facile de les inclure lorsque vous vous lancez dans un projet et que vous avez besoin d'une solution rapide. Ils peuvent être extrêmement difficiles à repérer plus tard, à moins que vous ne les recherchiez.