Php MySQL-组织数据库内容(体育联盟)

Php MySQL-组织数据库内容(体育联盟),php,mysql,database-design,mysqli,Php,Mysql,Database Design,Mysqli,我正在为我的青年体育组织设计一个PHP/MySQL解决方案,该解决方案将显示参加任何给定赛季的球队的时间表和排名。不幸的是,当涉及到数据库设计时,我只是在学习一些诀窍,并且有一点挑战让我的大脑围绕着一个相对简单的概念。也许有人可以插手澄清几点 我不清楚的是如何准确地构造数据库和表,以便正确地开始。这是我最终需要设置的: 我们有大约50所成员学校。每个人都需要自己的登录ID和密码。我在考虑将这些存储在各自的数据库中,因为这些帐户将在每个赛季重新用于代表球队,并允许教练登录并更新他们的比赛结果 每个

我正在为我的青年体育组织设计一个PHP/MySQL解决方案,该解决方案将显示参加任何给定赛季的球队的时间表和排名。不幸的是,当涉及到数据库设计时,我只是在学习一些诀窍,并且有一点挑战让我的大脑围绕着一个相对简单的概念。也许有人可以插手澄清几点

我不清楚的是如何准确地构造数据库和表,以便正确地开始。这是我最终需要设置的:

  • 我们有大约50所成员学校。每个人都需要自己的登录ID和密码。我在考虑将这些存储在各自的数据库中,因为这些帐户将在每个赛季重新用于代表球队,并允许教练登录并更新他们的比赛结果

  • 每个赛季有两项不同的运动。例如,即将到来的秋季有一个女孩排球联盟和一个男孩旗帜足球联盟。然后,每个联赛都有多个分区(按地理区域划分),在这些分区中,学校按照常规赛时间表进行比赛。我不确定每个赛季是否需要单独的数据库,每个联赛,等等

  • 每个赛区的常规赛将从赛程安排程序(通过Excel电子表格)中导入,并显示在自己的网页上,学校可以在该网页上查看即将举行的比赛并登录以更新结果

  • 随着比赛结果的更新,我需要找到一种方法,将这些结果反映在一个单独的网页上,该分区的联赛排名将显示在该网页上

  • 为了更清楚地演示我要做的事情,请看一下我分别为时间表和排名数据创建的这两个模拟页面:

    这就是我寻找你指导的地方。我应该如何为所有这些数据构建MySQL框架

    我想为学校登录ID建立一个单独的数据库,然后为每个季节性运动(如2013年男排)建立一个单独的数据库,每个分区有单独的表格,x列数表示其中的时间表和排名

    听起来是这样吗?我想的全错了吗?任何有助于充实这一思想过程的帮助或指导都将不胜感激


    非常感谢你

    哎哟。你承担了一项重要的工作。你是否绝对确定你将要做的任何事情都不能由已经可用的东西来完成?好吧,如果你确定的话,继续读下去

    首先,您想做的最困难的部分是管理您的用户访问。我建议您在继续之前先编写用户管理模块

    对于您想要的,Drupal或其他高级CMS系统可能是引导系统的一种很好的方式。Drupal将立即处理您的用户管理(或以最小的问题),您可以将其余代码编写为静态节点。这也使得添加博客、论坛、新闻和管理邮件列表等变得容易

    如上所述,您确实需要将数据保存在一起。保存数据以便进行历史比较也是件好事

    如果不延长CMS,在你从精神病医生那里回来后,你将需要以下内容:

  • 用于访问数据库并检查用户身份验证的头文件

  • 显示数据的页脚文件

  • 显示或获取数据的单个页面文件

  • 用于处理用户的数据库结构(至少)应为:

    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.
    
    要处理匹配,您需要:

    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.
    
    正如您所看到的,您需要相当多的表,但是在您的用户访问正常工作之前,您不能尝试与实际的团队一起做有趣的事情

    我给你们画的是一个正常形式的db。没有重复的文本数据,数据易于检索、索引和显示。我确实觉得这个问题对你来说太宽泛了,所以为你设计一个数据库有点超出范围,但我确实认为通用格式是有用的

    每个表应仅包含唯一的必要数据,例如:

    Person:  personid int, surname, forename, style, whenadded, whoadded, inuse
    email:   emailid, email, whenadded, whoadded, inuse
    email_person:  emailpersonid,emailid,personid, whenadded,whoadded,inuse
    
    这允许多人共享一封电子邮件,并将多封电子邮件应用于一个人,而不存在文本复制。ID应该是INT AUTO_INCREMENT PRIMARY KEY类型,而不是SERIAL类型,因为这样可以节省大量存储空间,并且在这个应用程序中永远不会填充INT

    其他表应以相同的方式创建。whoadded和whenadded列是可选的,并且非常需要存储,但可能非常有用。inuse是必不可少的,将其设置为BOOL,您可以删除团队而不删除他们-数据不会丢失。whenremoved和whoremoved对于审计也很有用

    一个关于密码的单词-请确保您将其存储为咸哈希。如果你这样做,当你的网站被黑客入侵时,没有人会暴露他们也用于网上银行的密码。人们常常是白痴。你必须照顾他们

    正如我所说的,有点超出范围,所以我将在这里结束回答-它根据要求为您提供了第四范式数据库的基本轮廓,它将是健壮的和可扩展的,但让您完成这项工作。如果问题太难,为什么不多问些问题呢

    祝你好运

    增加:

    DIY框架:

    如果您不想学习使用现有的框架或CMS,您需要编写自己的框架或CMS。奇怪的是,这其实很容易

    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
    ?>
    
    
    
    footer.php:

    <HTML>
    <HEAD>
    <TITLE>
    <?PHP echo $pagetitle;?>
    </TITLE>
    </HEAD>
    <BODY>
    <?PHP echo $content;?>
    </BODY>
    </HTML>
    
    
    
    mypage.php使用了以下内容:

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

    哎哟。你承担了一项重要的工作。你是否绝对确定你将要做的任何事情都不能由已经可用的东西来完成?好吧,如果你确定的话,继续读下去

    首先,你想做的最难的部分是妈妈