come fai a sapere come progettare un database mysql durante la creazione di un'applicazione php avanzata?

StackOverflow https://stackoverflow.com/questions/200257

  •  03-07-2019
  •  | 
  •  

Domanda

Non ho mai creato un carrello o forum in php. oltre a visualizzare e analizzare progetti di altre persone o visualizzare tutorial che mostrano come realizzare un tale progetto o come essere un tale progetto. come può una persona sapere come progettare la struttura del database per creare una cosa del genere? sto indovinando probabilmente attraverso tentativi ed errori ...

È stato utile?

Soluzione

La tecnica principale che puoi imparare sulla progettazione del database si chiama Normalizzazione del database .

La normalizzazione del database ha i suoi limiti, specialmente se hai molte transazioni. Ad un certo punto potresti essere costretto a Denormalize .

Ma imho è sempre meglio iniziare con una progettazione di database normalizzata.

Altri suggerimenti

dovresti leggere e comprendere le basi della normalizzazione . per la maggior parte dei progetti, la normalizzazione in terza forma normale andrà bene. ci sono sempre alcuni scenari in cui desideri più o meno normalizzazione, ma la comprensione dei concetti alla base ti consentirà di pensare a come è strutturato il tuo database in un formato normalizzato.

ecco un esempio molto semplice di normalizzazione di una tabella:

students
  student_id
  student_name
  student_class
  student_grade

una tabella abbastanza standard contenente vari dati, ma possiamo vedere subito alcuni problemi. possiamo vedere che il nome di uno studente dipende dal suo documento d'identità, tuttavia, uno studente può essere coinvolto in più di una classe e ogni classe avrebbe concepibilmente un voto diverso. possiamo quindi pensare alle tabelle in quanto tali:

students
  student_id
  student_name

class
  class_id
  class_name

questo non è male, ora possiamo vedere che abbiamo vari studenti e varie classi, ma non abbiamo catturato i voti degli studenti.

grades
  student_id
  class_id
  grade

ora abbiamo una terza tabella, che ci consente di comprendere la relazione tra un particolare studente, una classe particolare e un voto associato a quella classe. dalla nostra prima tabella iniziale, ora abbiamo 3 tabelle in un database normalizzato (supponiamo che non abbiamo bisogno di normalizzare ulteriormente i voti a titolo di esempio :))

alcune cose che possiamo trarre da questo esempio molto semplice:

  • i nostri dati sono tutti legati a una chiave di qualche tipo (student_id, class_id e student_id + class_id). questi sono identificatori univoci all'interno di ogni tabella.
  • con le nostre relazioni codificate, siamo in grado di mettere in relazione le informazioni tra loro (a quante classi è iscritto lo studente # 4096?)
  • ora possiamo vedere che le nostre tabelle non conterranno dati duplicati (pensa alla nostra prima tabella, dove student_class potrebbe avere lo stesso valore per molti studenti. Se dovessimo cambiare il nome della classe, dovremmo aggiornare tutti i record . nel nostro formato normalizzato, possiamo semplicemente aggiornare class_name di class_id)

Vorrei anche raccomandare l'uso di un editor visivo per la creazione dello schema del database. Di recente ho utilizzato: http://dev.mysql.com/workbench/

Dopo aver creato un progetto di database, chiedi a qualcuno con più esperienza di guardarlo e di darti un feedback. Ma sappi che tutto il tempo che puoi dedicare alla progettazione, alla fine dovrai fare l'implementazione e scoprirai che ti manca qualcosa o potresti fare un lavoro ancora migliore facendolo in un altro modo.

Quindi, progetta, ottieni feedback, ma non aver paura di cambiare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top