Heim  >  Artikel  >  Datenbank  >  MySQL-Designspezifikationen und -prinzipien

MySQL-Designspezifikationen und -prinzipien

Guanhui
Guanhuinach vorne
2020-05-11 11:13:362562Durchsuche

MYSQL-Datenbankdesignspezifikation

1. Datenbankbenennungsspezifikation

verwendet 26 englische Buchstaben (größenabhängig). geschrieben) und eine natürliche Zahl von 0 bis 9 (oft nicht erforderlich) plus einen Unterstrich „_“;

Der Name ist prägnant und klar (die Länge darf 30 Zeichen nicht überschreiten);

Für Beispiel: user, stat , log, Sie können der Datenbank auch ein Präfix hinzufügen mit wifi_user, wifi_stat, wifi_log

Sofern es sich nicht um eine Backup-Datenbank handelt, können Sie eine natürliche Zahl von 0 bis 9 hinzufügen: user_db_20151210;

2. Name der Datenbanktabelle Die Namenskonvention

besteht aus 26 englischen Buchstaben (Groß-/Kleinschreibung beachten) und natürlichen Zahlen von 0 bis 9 (häufig nicht erforderlich) plus dem Unterstrich '_';

wird prägnant und klar benannt.

Zum Beispiel: user_login, user_profile, user_detail, user_role_relation,

user_role_right, user_role_right_relation

Das Tabellenpräfix „user_“ kann gültig sein. Tabellen mit derselben Beziehung zusammen anzeigen

3 > verwendet 26 englische Buchstaben (Groß- und Kleinschreibung beachten) und 0-9, bestehend aus natürlichen Zahlen (häufig nicht erforderlich) sowie einen Unterstrich „_“

prägnante und klare Benennung, mehrere Wörter durch einen Unterstrich getrennt „; _';

Zum Beispiel: user_login-Tabellenfelder user_id, user_name, pass_word, eamil, tickit, status, mobile, add_time;

Jede Tabelle muss einen automatisch inkrementierenden Primärschlüssel haben, add_time ( Standardsystemzeit)

Der zugehörige Feldname zwischen Tabellen Die Anforderungen sind so ähnlich wie möglich;

4. Datenbanktabellenfeldtypspezifikationen

Verwendung so wenig Speicherplatz wie möglich, um Daten in einem Feld zu speichern;

Zum Beispiel: Wenn Sie int verwenden können, verwenden Sie nicht varchar oder char, wenn Sie varchar(16) verwenden können, verwenden Sie nicht varchar (256);

Am besten verwenden Sie den Typ int für die IP-Adresse;

Feste Länge Am besten verwenden Sie char für den Typ, zum Beispiel: Postleitzahl

Wenn Sie tinyint verwenden können, verwenden Sie nicht smallint, int;

Es ist am besten, jedem Feld einen Standardwert zu geben, vorzugsweise nicht null;

5

Die Benennung ist prägnant und klar. Zum Beispiel: Der Index des Feldes user_name der Tabelle user_login sollte der eindeutige Index von user_name_index sein.

ist für jeden ein Primärschlüssel Index für die Tabelle;

Erstellen Sie einen angemessenen Index für jede Tabelle;

Bitte seien Sie vorsichtig, wenn Sie einen zusammengesetzten Index erstellen;

Machen Sie sich mit der Datenbank vertraut Paradigma einfach

Erste Normalform (1NF): Feldwerte sind atomar und können nicht geteilt werden (alle relationalen Datenbanksysteme erfüllen die erste Normalform);

Zum Beispiel: Name Feld, wobei Nachname und Vorname ein Ganzes sind. Wenn Sie zwischen Nachname und Vorname unterscheiden möchten, müssen Sie zwei unabhängige Felder einrichten;

Zweite Normalform (2NF): Eine Tabelle muss einen Primärschlüssel haben, das heißt, jede Datenzeile kann eindeutig unterschieden werden;

Bemerkungen: Die erste Normalform muss zuerst erfüllt werden;

Dritte Normalform (3NF): Eine Tabelle kann nicht enthalten Informationen zu Nicht-Schlüsselfeldern in anderen zugehörigen Tabellen, d. h. die Datentabelle darf keine redundanten Felder enthalten. ;

Hinweis: Die zweite Normalform muss zuerst erfüllt werden;

Die dritte Normalform Form der Datenbank:

①Felder sind untrennbar.

②Es gibt einen Primärschlüssel, und Nicht-Primärschlüsselfelder hängen vom Primärschlüssel ab.

③Nicht-Primärschlüsselfelder können nicht voneinander abhängen.

MYSQL-Datenbank-Designprinzipien

1. Grundprinzipien

Führen Sie keine Operationen in der aus Datenbank;

CPU-Berechnungen müssen in die Business-Schicht verschoben werden

Kontrollieren Sie die Anzahl der Spalten (die Anzahl der Felder ist klein und präzise, ​​es wird empfohlen, dass die Anzahl der Felder innerhalb von 20 liegt). ;

Paradigma und Redundanz ausbalancieren (Effizienz zuerst; oft Paradigma opfern)

Ablehnen 3B (große SQL-Anweisung ablehnen: große SQL, große Dinge ablehnen: große Transaktion, große Menge ablehnen: große Menge) ;

2. Prinzip der Feldklasse:

Nutzen Sie numerische Typen (verwenden Sie geeignete Feldtypen, um Platz zu sparen);

Zeichen werden konvertiert in Zahlen (die bestmögliche Konvertierung, die auch Platz spart und die Abfrageleistung verbessert) ;

Vermeiden Sie die Verwendung von NULL-Feldern (NULL-Felder sind schwer abzufragen und zu optimieren, Indizes für NULL-Felder erfordern zusätzlichen Platz und zusammengesetzte Indizes für NULL-Felder sind ungültig);

Verwenden Sie weniger Texttyp (versuchen Sie, Varchar anstelle des Textfelds zu verwenden);

3. Indexprinzipien

Vernünftige Verwendung von Indizes (um Abfragen zu verbessern, Aktualisierungen zu verlangsamen, je mehr Indizes, desto besser);

Zeichenfelder müssen Präfixindizes erstellen;

Führen Sie keine Spaltenoperationen im Index durch;

Innodb-Primärschlüssel empfiehlt die Verwendung von Spalten mit automatischer Inkrementierung (der Primärschlüssel erstellt einen Clustered-Index, der Primärschlüssel sollte nicht geändert werden, Zeichenfolge Es sollte nicht der Primärschlüssel sein) (Sie werden es wissen, wenn Sie die Indexspeicherstruktur von Innodb verstehen) ;

erfordert keine Fremdschlüssel (eingeschränkt durch Programmgarantie);

4. Die SQL-Anweisung ist so einfach wie möglich (Eine SQL kann nur auf einer CPU ausgeführt werden, große Anweisungen werden in kleinere Anweisungen aufgeteilt, um die Sperrzeit zu verkürzen, und eine große SQL kann die gesamte Bibliothek blockieren);

Einfache Transaktionen ;

Vermeiden Verwenden von trig/func (Trigger und Funktionen werden nicht durch Client-Programme ersetzt);

Verwenden Sie nicht select * (verbraucht CPU, IO, Speicher, Bandbreite, diese Art von Programm ist nicht skalierbar) ;

Vermeiden Sie negative %;

Verwenden Sie count(*) mit Vorsicht;

begrenzen Sie effizientes Paging (je größer das Limit, desto geringer die Effizienz);

Verwenden Sie Union alle statt Union (Union hat den Overhead der Deduplizierung);

Weniger Join verwenden;

Gruppieren nach verwenden;

Bitte gleichen Typvergleich verwenden;

Batch-Batch-Updates;

5. Leistungsanalyse-Tools

Profil anzeigen;

mysqlsla;

mysqldumpslow;

erklären;

langsames Protokoll anzeigen;

Prozessliste anzeigen;

Empfohlenes Tutorial: „MySQL-Tutorial

Das obige ist der detaillierte Inhalt vonMySQL-Designspezifikationen und -prinzipien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:zhihu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen