Der MySQL-Fremdschlüssel ist eine sehr nützliche Datenverarbeitungsfunktion, mit der Daten zwischen Tabellen schnell aktualisiert werden k?nnen. Einfach ausgedrückt kann er eine Zuordnung zwischen zwei Tabellen herstellen und eine Tabelle bedienen. Zu diesem Zeitpunkt ?ndern sich auch die Daten in einer anderen Tabelle.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, MySQL8-Version, Dell G3-Computer.
Was ist ein MySQL-Fremdschlüssel?
Die Verwendung von MySQL-Fremdschlüsseln
Fremdschlüssel sind eine sehr, sehr einfach zu verwendende Sache, und sie sind auch eine Funktion, die viele relationale Datenbanken haben. Es kann eine Beziehung zwischen zwei Tabellen hergestellt werden, sodass sich beim Betrieb einer Tabelle auch die Daten in der anderen Tabelle gleichzeitig ?ndern.
Beispiel:
一個學生表里面有學生的所有信息,其中有一個字段是班級id,又有一個班級表,記錄著所有的班級信息,按照邏輯來說,如果我們刪除了班級 表里面的某個班級,學生表里面是這個班級id的信息就應該修改。
Das obige Beispiel kann normal ausgefüllt werden, wenn wir zuerst die Klasse l?schen und dann das Klassen-ID-Feld ?ndern, das die Schülerinformationen dieser Klasse in der Schülertabelle darstellt zwei Teile. Wenn wir jedoch Fremdschlüssel verwenden, ist nur ein Schritt erforderlich. Solange einer der Fremdschlüssel zugeordnet ist, wird der andere automatisch aktualisiert. Es ist auch einfacher
Details vor der Verwendung
- Bei der Auswahl einer Speicher-Engine für die Datenbank müssen Sie eine Speicher-Engine ausw?hlen, die sich an Fremdschlüssel anpasst, z. B. die Standard-Speicher-Engine von MySQL innodb
- Die Feldtypen des zugeh?rigen Fremdschlüssels Felder müssen konsistent sein: Wenn die Klassen-ID der Klassentabelle vom Typ int ist, sollte auch die Klassen-ID vom Typ int sein. Dies ist sehr wichtig. Erstellen Sie Fremdschlüsseleinschr?nkungen im neue Tabelle
create?table?stu_study?( ??sid?int?primary?key?auto_increment,--?定義Sid?? ??????sname?varchar(15)?not?null, ??????course_id?int?default?null,??--?定義課程id?課程id是外鍵所以要與關聯(lián)的主表的字段類型保持一致 ??????constraint?stu_study_class?--?一個表里可能有多個表之間關聯(lián),所以外鍵需要起一個名字 ??????foreign?key?(class_id)?--?關聯(lián)的外鍵名 ??????references?classes(id)??--?關聯(lián)的主表和主表的字段 ??????on?delete?cascade??--?當刪除的時候觸發(fā) ????)engine=InnoDB?default?charset?utf8??--?默認存儲引擎和編碼的字符串
Fremdschlüssel in vorhandenen Tabellen hinzufügen und l?schen
Fremdschlüssel l?schen ··· – Fremdschlüssel l?schen (Fremdschlüsseleinschr?nkungen)
Tabelle ?ndern stu_study Fremdschlüssel l?schen stu_study_classes;- ·· ·
-
Um einen Fremdschlüssel zu l?schen, l?schen Sie ihn anhand des Fremdschlüsselnamens in der Tabelle. Dadurch wissen wir auch indirekt, dass der Fremdschlüsselname nicht wiederholt werden kann.
Fremdschlüssel hinzufügen--?添加外鍵 ??alter?table?stu_study?add ??constraint?stu_study_classes??--?外鍵名?是一定不能夠重復的,通常會用關聯(lián)的兩個表名進行命名 ??foreign?key(course_id) ??references?classes(id) ??on?delete?cascade;
- Das Hinzufügen von Fremdschlüsseln zu einer vorhandenen Tabelle ist dem Hinzufügen von Fremdschlüsseln beim Erstellen einer Tabelle sehr ?hnlich. Ein Detail besteht darin, dass er den Namen des Fremdschlüssels mit Einschr?nkung verwenden muss, um den Namen des Fremdschlüssels festzulegen Schlüssel. Wir werden feststellen, dass das Hinzufügen und ?ndern von Fremdschlüsseln dem Hinzufügen und ?ndern von Tabellenfeldern sehr ?hnlich ist.
Operationen zugeh?riger Aktionen
Wir k?nnen das Wort ?Tabelle“ und ?Untertabelle“ einfach so verstehen, dass die Tabelle mit dem Fremdschlüsselsatz die Untertabelle ist.
Es gibt viele Arten verwandter Aktionen, wie z. B. Diese drei werden alle festgelegt, wenn der Fremdschlüssel festgelegt wird, z Da
die beim L?schen ausgeführte Aktion bedeutet, sind die Hauptunterschiede folgende:
-
cascade
刪除主表的某個字段的時候,子表含有這個字段的數(shù)據(jù)會被清空,這個還是屬于相對危險的一個操作的 -
+set null
刪除主表的某個字段的時候,子表含有這個字段的這個哪一行的這個字段會用null來顯示,但是有個細節(jié)就是設置外鍵的這個字段字段類型就不能設置為not null類型的,否則會報錯 -
no action
這個字段會比較有意思,也就是說當主表要刪除某個行的時候,如果外鍵關聯(lián)有含有這個主表的外鍵的字段數(shù)據(jù)的話,就不會刪除成功,系統(tǒng)會直接報錯
關聯(lián)更新操作
之前是主要講了關聯(lián)刪除,是因為外鍵在使用的時候關聯(lián)刪除操作是使用的比較頻繁的,關聯(lián)更新的頻率是相對來說低一點兒的
關聯(lián)更新的三個關聯(lián)操作和刪除時一樣的,分別是cascade
,set null
,no action
意思是也是一樣的,主表某個字段更新了,子表也會更新那個字段!?。?,主表更新的某條數(shù)據(jù),子表的使用的那個數(shù)據(jù)會變成空,和子表在使用的情況下,主表就不能夠更新數(shù)據(jù)
alter?table?stu_study?drop?foreign?key?stu_study_classes;??--?刪除外鍵 --?添加外鍵 alter?table?stu_study?add? ????constraint?stu_study_classes? ????foreign?key?(course_id)? ????references?classes(id)? ????on?delete?set?null?--?一次性設置外鍵的兩種動作 ????on?update?cascade
總結(jié)
- 數(shù)據(jù)庫的外鍵是非常非常好用的一個技術,可以讓我們快速的進行表之間的數(shù)據(jù)的更新
- 外鍵可以簡單的理解成會自動的替我們做一個數(shù)據(jù)變動的處理
推薦學習:《MySQL視頻教程》
Das obige ist der detaillierte Inhalt vonWas ist ein MySQL-Fremdschlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

1. Die erste Wahl für die Kombination aus Laravel Mysql Vue/React in der PHP -Entwicklungsfrage und der Antwortgemeinschaft ist die erste Wahl für die Kombination aus Laravel Mysql Vue/React aufgrund ihrer Reife im ?kosystem und der hohen Entwicklungseffizienz; 2. Die hohe Leistung erfordert Abh?ngigkeit von Cache (REDIS), Datenbankoptimierung, CDN und asynchronen Warteschlangen; 3. Die Sicherheit muss mit Eingabefilterung, CSRF -Schutz, HTTPS, Kennwortverschlüsselung und Berechtigungssteuerung erfolgen. V.

Es gibt drei Hauptmethoden, um Umgebungsvariablen in PHP festzulegen: 1. Globale Konfiguration über php.ini; 2. durch einen Webserver (z. B. SetEnv von Apache oder FastCGI_Param von Nginx); 3. Verwenden Sie die Funktion Putenv () in PHP -Skripten. Unter ihnen eignet sich Php.ini für globale und selten ?ndernde Konfigurationen. Die Webserverkonfiguration eignet sich für Szenarien, die isoliert werden müssen, und Putenv () ist für tempor?re Variablen geeignet. Die Persistenz -Richtlinien umfassen Konfigurationsdateien (z. B. Php.ini oder Webserverkonfiguration), .env -Dateien werden mit der DOTENV -Bibliothek und dynamische Injektion von Variablen in CI/CD -Prozessen geladen. Sicherheitsmanagement sensible Informationen sollten hart codiert werden, und es wird empfohlen.

Um die MySQL -Bereitstellungsautomatisierung zu erreichen, besteht der Schlüssel darin, Terraform zu verwenden, um Ressourcen, Ansible Management -Konfiguration, Git für die Versionskontrolle und die St?rkung der Sicherheit und des Berechtigungsmanagements zu definieren. 1. Verwenden Sie Terraform, um MySQL -Instanzen wie Version, Typ, Zugriffskontrolle und andere Ressourcenattribute von AWSRDs zu definieren. 2. Verwenden Sie AnsiliblePlaybook, um detaillierte Konfigurationen wie Datenbankbenutzererstellung, Berechtigungseinstellungen usw. Zu realisieren; 3.. Alle Konfigurationsdateien sind in GIT -Management, Unterstützung ?nderungsverfolgung und kollaborativer Entwicklung enthalten. 4. Vermeiden Sie hartcodierte sensible Informationen, verwenden Sie Vault oder AnsibleVault, um Kennw?rter zu verwalten und die Zugriffskontrolle und die Mindestberechtigungsprinzipien festzulegen.

Warum brauche ich eine SSL/TLS -Verschlüsselungs -MySQL -Verbindung? Da unverschlüsselte Verbindungen dazu führen k?nnen, dass sensible Daten abgefangen werden, kann das Erm?glichen von SSL/TLS-Angriffen von Menschen in der Zwischenzeit verhindern und die Compliance-Anforderungen erfüllen. 2. Wie konfigurieren Sie SSL/TLS für MySQL? Sie müssen ein Zertifikat und einen privaten Schlüssel generieren, die Konfigurationsdatei ?ndern, um die SSL-CA-, SSL-Cert- und SSL-Key-Pfade anzugeben und den Dienst neu zu starten. 3. Wie kann man SSL erzwingen, wenn der Client eine Verbindung herstellt? Implementiert durch Angabe von Anforderungs- oder Anforderungsquellen bei der Erstellung eines Benutzers; 4. Details, die in der SSL -Konfiguration leicht übersehen werden, umfassen Zertifikatpfadberechtigungen, Probleme mit Zertifikatverlauf und Client -Konfigurationsanforderungen.

Um Benutzerverhaltensdaten zu erfassen, müssen Sie das Browsen, die Suche, den Kauf und andere Informationen über PHP in die Datenbank aufzeichnen und sie reinigen und analysieren, um die Interessenpr?ferenzen zu untersuchen. 2. Die Auswahl der Empfehlungsalgorithmen sollte auf der Grundlage von Datenmerkmalen ermittelt werden: basierend auf Inhalten, kollaborativen Filterung, Regeln oder gemischten Empfehlungen; 3. Die kollaborative Filterung kann in PHP implementiert werden, um die ?hnlichkeit der Benutzer Cosinus Cosinus zu berechnen, K n?chste Nachbarn auszuw?hlen, gewichtete Vorhersagewerte zu erzielen und Produkte mit hoher Punktzahl zu empfehlen. 4. Die Leistungsbewertung verwendet Genauigkeit, Rückruf, F1 -Wert und CTR, Conversion -Rate und überprüfen den Effekt durch A/B -Tests. 5. Kaltstartprobleme k?nnen durch Produktattribute, Benutzerregistrierungsinformationen, Volksempfehlungen und Expertenbewertungen gelindert werden. 6. Die Leistungsoptimierungsmethoden umfassen zwischengespeicherte Empfehlungsergebnisse, asynchrone Verarbeitung, verteiltes Computing und SQL -Abfrageoptimierung, wodurch die Empfehlungseffizienz und die Benutzererfahrung verbessert werden.

Bei der Auswahl eines geeigneten PHP -Frameworks müssen Sie nach den Projektanforderungen umfassend berücksichtigen: Laravel ist für die schnelle Entwicklung geeignet und bietet eloquentorm- und Blade -Vorlagenmotoren, die für den Datenbankbetrieb und das dynamische Formrending bequem sind. Symfony ist flexibler und für komplexe Systeme geeignet. CodeIgniter ist leicht und für einfache Anwendungen mit hohen Leistungsanforderungen geeignet. 2. Um die Genauigkeit von KI-Modellen sicherzustellen, müssen wir mit einem qualitativ hochwertigen Datentraining, einer angemessenen Auswahl von Bewertungsindikatoren (wie Genauigkeit, Rückruf, F1-Wert), regelm??iger Leistungsbewertung und Modellabstimmung und sicherstellen, dass die Codequalit?t durch Testen und Integrationstests der Code sichergestellt wird, um die Eingabedaten kontinuierlich zu überwachen. 3.. Viele Ma?nahmen sind erforderlich, um die Privatsph?re der Benutzer zu schützen: Verschlüsseln und speichern sensible Daten (wie AES

PHP spielt die Rolle des Connector- und Brain Center im intelligenten Kundendienst, der für die Verbindung von Front-End-Eingaben, Datenbankspeicher und externen KI-Diensten verantwortlich ist. 2. Bei der Implementierung ist es notwendig, eine mehrschichtige Architektur zu erstellen: Das Front-End empf?ngt Benutzernachrichten, die PHP-Back-End-Vorverarbeitete und Routes-Anfragen, stimmt zun?chst mit der lokalen Wissensbasis überein und verpasst sie, rufen Sie externe KI-Dienste wie OpenAI oder Dialogflow an, um intelligente Antwort zu erhalten. 3. Die Sitzungsverwaltung wird von PHP an MySQL und andere Datenbanken geschrieben, um die Kontext -Kontinuit?t zu gew?hrleisten. 4. Integrierte KI -Dienste müssen mit Guzzle HTTP -Anfragen senden, APIKEYs sicher speichern und eine gute Aufgabe der Fehlerbehandlung und -antwortanalyse durchführen. 5. Datenbankdesign muss Sitzungen, Nachrichten, Wissensbasis und Benutzertabellen enthalten, vernünftigerweise Indizes erstellen, Sicherheit und Leistung sicherstellen und Roboterspeicher unterstützen

Um PHP -Container zur Unterstützung der automatischen Konstruktion zu erm?glichen, liegt der Kern in der Konfiguration des Continuous Integration (CI) -Prozesses. 1. Verwenden Sie Dockerfile, um die PHP -Umgebung zu definieren, einschlie?lich grundlegender Bild-, Erweiterungsinstallations-, Abh?ngigkeitsmanagement- und Berechtigungseinstellungen. 2. Konfigurieren Sie CI/CD-Tools wie GitLabci und definieren Sie die Erstell-, Test- und Bereitstellungsstadien über die Datei .gitlab-ci.yml, um automatische Konstruktion, Test und Bereitstellung zu erreichen. 3.. Integrieren Sie Testframeworks wie Phpunit, um sicherzustellen, dass die Tests automatisch nach Code?nderungen ausgeführt werden. 4. Verwenden Sie automatisierte Bereitstellungsstrategien wie Kubernetes, um die Bereitstellungskonfiguration durch die Datei bereitzustellen. 5. Dockerfile optimieren und mehrstufige Konstruktionen übernehmen
