Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL — organizowanie zawartości bazy danych (liga sportowa)

Auć. Wziąłeś się na wielką pracę. Czy jesteś absolutnie pewien, że nic, co zamierzasz zrobić, nie może zostać zrobione przez coś, co jest już dostępne? Cóż, jeśli jesteś pewien, czytaj dalej.

Po pierwsze, najtrudniejszą częścią tego, co chcesz zrobić, jest zarządzanie dostępem użytkowników. Radzę zacząć od napisania modułu zarządzania użytkownikami, zanim przejdziesz dalej.

Jeśli chcesz, wydaje się prawdopodobne, że Drupal lub jeden z innych starszych systemów CMS byłby świetnym sposobem na załadowanie systemu. Drupal zajmie się zarządzaniem użytkownikami od razu po wyjęciu z pudełka (lub z minimalnymi problemami), a resztę kodu możesz napisać jako węzły statyczne. Ułatwia to również dodawanie blogów, forów, aktualności oraz zarządzanie listami mailingowymi itp.

Jak stwierdzono w powyższych komentarzach, musisz przechowywać swoje dane razem. dobrze byłoby zachować dane również do porównań historycznych.

Jeśli nie przedłużysz CMS, po powrocie od psychiatry będziesz potrzebować czegoś w stylu:

  1. plik nagłówkowy, aby uzyskać dostęp do bazy danych i sprawdzić uwierzytelnienie użytkownika.

  2. plik stopki do wyświetlania danych

  3. poszczególne pliki stron do prezentacji lub uzyskania Twoich danych.

Struktura bazy danych do obsługi użytkowników (przynajmniej) powinna być 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.

Aby obsłużyć mecze, będziesz potrzebować:

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.

Jak widać, potrzebujesz kilku stołów, ale NIE WOLNO próbować robić zabawnych rzeczy z rzeczywistymi zespołami, DOPÓKI dostęp użytkownika nie będzie działał poprawnie.

To, co dla ciebie naszkicowałem, to db w normalnej formie. Żadne dane tekstowe nie są duplikowane, a ich pobieranie, indeksowanie i wyświetlanie jest łatwe. Uważam, że to pytanie jest zbyt szerokie dla SO, ponieważ projektowanie bazy danych jest nieco poza zakresem, ale myślę, że ogólny format jest przydatny.

Każda tabela powinna zawierać tylko unikalne niezbędne dane, np.:

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

Dzięki temu wiele osób może udostępniać jeden e-mail i wiele e-maili można zastosować do jednej osoby bez duplikowania tekstu. Identyfikatory należy wpisać INT AUTO_INCREMENT PRIMARY KEY zamiast SERIAL, ponieważ pozwala to zaoszczędzić dużo miejsca w pamięci i nigdy nie wypełnisz INT w tej aplikacji.

Pozostałe tabele należy utworzyć w ten sam sposób. Kolumny whoadded i whenadded są opcjonalne i dość mało miejsca do przechowywania, ale mogą być bardzo przydatne. inuse jest niezbędne ustaw to na BOOL i możesz usuwać zespoły bez ich usuwania - dane nie zostaną utracone. Kiedy usunięto i wyszłam, przydaje się również do audytu.

Słowo o hasłach - upewnij się, że przechowujesz je jako SOLONY HASH. Jeśli to zrobisz, gdy Twoja witryna zostanie zhakowana, nikt nie będzie miał ujawnionego hasła, którego używa również do swojej bankowości internetowej. Ludzie często są idiotami. Musisz się nimi opiekować.

Jak powiedziałem, jest to trochę poza zakresem, więc zakończę odpowiedź na tym miejscu – daje, zgodnie z żądaniem, podstawowy zarys 4-tej bazy danych normalnej postaci, która będzie solidna i rozszerzalna, ale pozostawia ci pracę. Dlaczego nie zadać więcej pytań, jeśli problem okaże się zbyt trudny.

Powodzenia.

DODANO:

Ramy DIY:

Jeśli nie chcesz uczyć się obsługi jednego z istniejących frameworków lub CMS, będziesz musiał napisać własny. Co dziwne, w rzeczywistości jest to bardzo łatwe.

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>

Są one używane przez mypage.php:

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

Należy podkreślić, że jest to absolutne minimum, którego będziesz potrzebować i jest naprawdę beznadziejne - przedstawiono go tylko po to, aby pokazać, jak należy to zacząć, a nie przykład idealnego kodu. To zadziała.

Kluczem jest utworzenie nagłówka, który przedstawia potrzebne zmienne, takie jak połączenie z bazą danych, nazwa użytkownika, status logowania użytkownika itp. oraz stopkę, do której można wprowadzić szczegóły, aby zaprezentować dane. Stopka to jedyne miejsce, w którym łączysz HTML i PHP.

Użyj swojej $_SESSION do przechowywania informacji, które muszą być utrwalane między stronami.

Pliki te mogą być tak proste lub złożone, jak chcesz - stworzyłem własne wieki temu, które wykonują kilka kontroli użytkownika i sesji oraz mogą wyświetlać skrypty, niestandardowe pliki CSS i tym podobne w stopce. Nie jest to trudne, jeśli zaczynasz prosto i rozbudowujesz, jak potrzebujesz. SO będzie tutaj, aby Ci pomóc.

Jedno słowo ostrzeżenia:chociaż możesz zacząć bardzo prosto, to, co próbujesz zrobić, ma nogi i wymknie się spod kontroli. Sprawdź swój kod po jego uruchomieniu, aby upewnić się, że nie zawiera on przypadkowo luk w zabezpieczeniach. Bardzo łatwo jest je uwzględnić, gdy wchodzisz do projektu i potrzebujesz szybkiej naprawy, a później mogą być diabelnie trudne do zauważenia, chyba że ich szukasz.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. django.db.utils.OperationalError:(1045:Odmowa dostępu dla użytkownika 'root'@'localhost' (przy użyciu hasła:NIE)

  2. Obcinanie ciągów na długość, ale nie wolno ciąć słów

  3. Używanie zmiennej w ustawianiu wartości tabeli mysql INNODB AUTO_INCREMENT

  4. Filtruj dane wyjściowe zapytania z wierszem z innej tabeli

  5. Jak skonfigurować replikację MySQL w RHEL, Rocky i AlmaLinux?