Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL - Организиране на съдържанието на базата данни (Спортна лига)

ой. Поехте голяма работа. Абсолютно ли сте сигурни, че нищо, което ще направите, не може да бъде направено от нещо, което вече е налично? Е, ако сте сигурни, прочетете нататък.

Първо, най-трудната част от това, което искате да направите, е да управлявате потребителския си достъп. Бих ви посъветвал да започнете, като напишете своя модул за управление на потребителите, преди да продължите по-нататък.

За това, което искате, изглежда вероятно Drupal или някоя от другите старши CMS системи ще бъде чудесен начин за стартиране на системата. Drupal ще се справи с управлението на вашите потребители веднага от кутията (или с минимални проблеми) и можете да напишете останалата част от кода си като статични възли. Това също така улеснява добавянето на блогове, форуми, новини и управление на пощенски списъци и т.н.

Както е посочено в коментарите по-горе, трябва да съхранявате данните си заедно. би било добре да запазите данни и за исторически сравнения.

Ако не удължавате CMS, след като се върнете от психиатъра, ще ви трябва нещо от рода на:

  1. заглавен файл за достъп до db и проверка за удостоверяване на потребителя.

  2. долен колонтитул за показване на вашите данни

  3. отделни файлове на страници, за да представите или получите вашите данни.

Структурата на базата данни за работа с потребителите (най-малко) трябва да бъде 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.

За да се справите със съвпаденията, ще ви трябва:

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

Това позволява на няколко души да споделят един имейл и няколко имейла да бъдат приложени към един човек без дублиране на текст. Идентификаторите трябва да са тип INT AUTO_INCREMENT PRIMARY KEY, а не SERIAL, тъй като това спестява много място за съхранение и никога няма да попълните INT в това приложение.

Останалите таблици трябва да бъдат създадени по същия начин. Колоните whoadded и whenadded са по избор и са доста гладни за съхранение, но могат да бъдат много полезни. inuse е от съществено значение, задайте това на BOOL и можете да премахвате екипи, без да ги изтривате - данните не се губят. A whenremoved и whoremoved също е полезен за одит.

Няколко думи за паролите - моля, уверете се, че ги съхранявате като СОЛЕН ХЕШ. Ако направите това, когато вашият сайт бъде хакнат, никой няма да разкрие паролата, която използва и за своето интернет банкиране. Хората често са идиоти. Трябва да се грижиш за тях.

Както казах, малко извън обхвата, така че ще завърша отговора дотук - той ви дава, както се изисква, основния план на 4-та нормална форма Db, който ще бъде здрав и разширяем, но ви оставя да вършите работата. Защо не зададете повече въпроси, ако проблемът се окаже твърде труден.

Успех.

ДОБАВЕНО:

Направи си сам рамка:

Ако не искате да се научите да използвате една от съществуващите рамки или 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:);
?>

Трябва да се подчертае, че това е най-малкият минимум, от който ще се нуждаете и е наистина гадно - той е просто представен, за да покаже как трябва да започне това, а не пример за идеален код. Все пак ще работи.

Ключът е да създадете заглавка, която представя променливите, от които ще се нуждаете, като връзка с db, потребителско име, статус на влизане на потребител и т.н. и долен колонтитул, в който можете да въведете подробности, за да представите данните. Долен колонтитулът е единственото място, където комбинирате HTML и PHP.

Използвайте своя $_SESSION, за да съхранявате информация, която трябва да продължи между страниците.

Тези файлове могат да бъдат толкова прости или сложни, колкото искате - аз създадох свои собствени преди години, които правят няколко проверки на потребителя и сесията и могат да показват скриптове, персонализирани CSS файлове и други в долния колонтитул. Не е трудно да се направи, ако започнете просто и надграждате според нуждите. SO ще бъде тук, за да ви помогне.

Една дума за предупреждение:въпреки че можете да започнете много просто, това, което се опитвате да направите, има крака и ще излезе извън контрол. Моля, проверете кода си, след като го стартирате и стартирате, за да се уверите, че не сте включили по невнимание пропуски в сигурността. Много е лесно да ги включите, когато влезете в проект и имате нужда от бърза корекция, а по-късно може да бъде много трудно да ги забележите, освен ако не ги търсите.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PERIOD_ADD() Примери – MySQL

  2. Вмъкване на масив в MySQL база данни с PHP

  3. Защо тази MySQL заявка, използваща rand(), не връща резултати около една трета от времето?

  4. Пренасочване на скитни портове за Mysql

  5. PHP in_array срещу MySQL SELECT