Heim Datenbank MySQL-Tutorial 自考《数据库系统原理》(6)之数据库管理

自考《数据库系统原理》(6)之数据库管理

Jun 07, 2016 pm 03:11 PM
事务 数据库 管理

数据库的管理包括事务、恢复、并发控制、完整性和安全性等内容。说到事务,先给大家它的定义。 事务 是构成单一逻辑工作单元的操作集合,要么完整地执行,要么完全不执行。不论发生何种情况,DBS必须保证事务能正确、完整地执行。 看到这样的定义,初学的人

自考《数据库系统原理》(6)之数据库管理

数据库的管理包括事务、恢复、并发控制、完整性和安全性等内容。说到事务,先给大家它的定义。

事务是构成单一逻辑工作单元的操作集合,要么完整地执行,要么完全不执行。不论发生何种情况,DBS必须保证事务能正确、完整地执行。

看到这样的定义,初学的人肯定会晕。举一个例子给大家说,去柜员机取款,当你放进去卡,事务开始(BEGIN TRANSACTION),点击确认要取出二百后,系统正常运行把钱给你,取出你的卡,这个事务结束(COMMIT)。但是如果系统正当运行的时候,忽然断电了,钱也没取出来。你是不是会担心你的银行卡会少二百块钱,这个你放心,现在事务就开始起作用了。当运行失败的时候,那么事务就会回退(ROLLBACK),你卡上的钱是不会动的。这样事务的定义就显而易见了吧,做一件事,要么你就不执行,要么你就完整地执行下来,执行了但没有成功那么就回到原始没有执行的状态。

当然这里说的事务是计算机,那么针对的是数据库。为了保证数据库中的数据是正确的,我们对其性质有什么要求呢?简单来说,就是ACID性质。对于数据库的操作来说,要么你就全部执行,要么就什么也不做,这就是原子性(Atomicity);那么事务执行的时候,数据应该一直要一致,这就是所谓的一致性(Consistency);多个事务同时执行的时候,那么系统和这些事务单独执行时的结果是一样的,此谓隔离性(Isolation);事务完成全部的操作后,对数据库的更新应该永久地存在数据库中,此谓持久性(Durability)。

对数据库的管理主要通过四个方面来实现:数据库的恢复、并发控制、完整性控制盒安全性控制

说到恢复,首先你得做好日常工作的备份啊,这样到数据库出问题的时候,你就可以来恢复了。再说并发控制,听起来很“高大尚”,其实就是很多事务同时对数据库操作,这样很容易出问题啊,数据不一致了,中间丢了一个操作没有更新(丢失问题);一个事务操作了,都没有提交,紧接着下一个事务来读取上一个事务的操作。上一个事务修改了,但下一个事务却没动,这就导致了读出了脏数据问题;两个事务,同时读取同一个数,一个事务把数改了,另一个却没有。此谓不可重复读问题。

为了解决这些问题呢,用了封锁技术来使数据库之间的相关联的数据能够同步。有一种排他型封锁(X锁),说白了就是自己加了锁就不让别人加了,一旦加上了锁,对数据做了修改,除非全部的操作完成了,否则是不能解锁的。这样,丢失更新问题就解决了。还有一个共享锁(S锁),就是自己和别人都能够对同一事物加锁呗,但是有一点,一旦加S锁,数据不能修改,只能读取,必须升级为X锁才行。但就是这样一个好东西也会发生活锁,饿死和死锁问题。这就又引出了一个概念-可串行化。多个事务依次执行,就是串行调度,分时同时处理多个事务就是并发调度,在每个事务中,语句的先后顺序不管在哪都始终是一致的,那么并发调度的执行结果与串行调度执行结果若等价,那么这个并发调度就是可串行化的调度。还有SQL中设置事务的存取方式和隔离级别对并发操作进行了管理,知道这回事就行。

紧接着说数据的完整性,其实就是要保持数据始终是完整的,不受破坏,这样有了一套规则来保证。即所谓的完整性规则。那怎么样来定义这些规则又出现了三个约束。域约束、基本表约束和断言。没弄懂,知道有这回事就好。但是这些约束都太被动了,遇到复杂的操作还需要主动去进行,那么就有了触发器。

最后是数据库的安全性。无论什么安全都是很重要的。比如说专利,没有发明人的授权,你是不能随便用的。这就是所谓的权限问题。再说角色问题,你是提高班的一元,米老师就给你一个胸牌,允许你进入机房学习。没有了这些东西岂不是会非常的不安全啊。

说来说去,数据库就这么些东西,用自己的生活来理解它会变得非常的简单。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

iOS 18 fügt eine neue Albumfunktion „Wiederhergestellt' hinzu, um verlorene oder beschädigte Fotos wiederherzustellen iOS 18 fügt eine neue Albumfunktion „Wiederhergestellt' hinzu, um verlorene oder beschädigte Fotos wiederherzustellen Jul 18, 2024 am 05:48 AM

Apples neueste Versionen der iOS18-, iPadOS18- und macOS Sequoia-Systeme haben der Fotoanwendung eine wichtige Funktion hinzugefügt, die Benutzern dabei helfen soll, aus verschiedenen Gründen verlorene oder beschädigte Fotos und Videos einfach wiederherzustellen. Mit der neuen Funktion wird im Abschnitt „Extras“ der Fotos-App ein Album mit dem Namen „Wiederhergestellt“ eingeführt, das automatisch angezeigt wird, wenn ein Benutzer Bilder oder Videos auf seinem Gerät hat, die nicht Teil seiner Fotobibliothek sind. Das Aufkommen des Albums „Wiederhergestellt“ bietet eine Lösung für Fotos und Videos, die aufgrund einer Datenbankbeschädigung verloren gehen, die Kameraanwendung nicht korrekt in der Fotobibliothek speichert oder eine Drittanbieteranwendung die Fotobibliothek verwaltet. Benutzer benötigen nur wenige einfache Schritte

Wie implementiert Hibernate polymorphe Zuordnung? Wie implementiert Hibernate polymorphe Zuordnung? Apr 17, 2024 pm 12:09 PM

Die polymorphe Hibernate-Zuordnung kann geerbte Klassen der Datenbank zuordnen und bietet die folgenden Zuordnungstypen: Joined-Subclass: Erstellen Sie eine separate Tabelle für die Unterklasse, einschließlich aller Spalten der übergeordneten Klasse. Tabelle pro Klasse: Erstellen Sie eine separate Tabelle für Unterklassen, die nur unterklassenspezifische Spalten enthält. Union-Unterklasse: ähnelt der verbundenen Unterklasse, aber die Tabelle der übergeordneten Klasse vereint alle Spalten der Unterklasse.

Ausführliches Tutorial zum Herstellen einer Datenbankverbindung mit MySQLi in PHP Ausführliches Tutorial zum Herstellen einer Datenbankverbindung mit MySQLi in PHP Jun 04, 2024 pm 01:42 PM

So verwenden Sie MySQLi zum Herstellen einer Datenbankverbindung in PHP: MySQLi-Erweiterung einbinden (require_once) Verbindungsfunktion erstellen (functionconnect_to_db) Verbindungsfunktion aufrufen ($conn=connect_to_db()) Abfrage ausführen ($result=$conn->query()) Schließen Verbindung ( $conn->close())

Eine ausführliche Analyse, wie HTML die Datenbank liest Eine ausführliche Analyse, wie HTML die Datenbank liest Apr 09, 2024 pm 12:36 PM

HTML kann die Datenbank nicht direkt lesen, dies kann jedoch über JavaScript und AJAX erreicht werden. Zu den Schritten gehören das Herstellen einer Datenbankverbindung, das Senden einer Abfrage, das Verarbeiten der Antwort und das Aktualisieren der Seite. Dieser Artikel bietet ein praktisches Beispiel für die Verwendung von JavaScript, AJAX und PHP zum Lesen von Daten aus einer MySQL-Datenbank und zeigt, wie Abfrageergebnisse dynamisch auf einer HTML-Seite angezeigt werden. In diesem Beispiel wird XMLHttpRequest verwendet, um eine Datenbankverbindung herzustellen, eine Abfrage zu senden und die Antwort zu verarbeiten. Dadurch werden Daten in Seitenelemente gefüllt und die Funktion des HTML-Lesens der Datenbank realisiert.

Umgang mit Datenbankverbindungsfehlern in PHP Umgang mit Datenbankverbindungsfehlern in PHP Jun 05, 2024 pm 02:16 PM

Um Datenbankverbindungsfehler in PHP zu behandeln, können Sie die folgenden Schritte ausführen: Verwenden Sie mysqli_connect_errno(), um den Fehlercode abzurufen. Verwenden Sie mysqli_connect_error(), um die Fehlermeldung abzurufen. Durch die Erfassung und Protokollierung dieser Fehlermeldungen können Datenbankverbindungsprobleme leicht identifiziert und behoben werden, wodurch der reibungslose Betrieb Ihrer Anwendung gewährleistet wird.

Wie verarbeitet die Java-Datenbankverbindung Transaktionen und Parallelität? Wie verarbeitet die Java-Datenbankverbindung Transaktionen und Parallelität? Apr 16, 2024 am 11:42 AM

Transaktionen gewährleisten die Integrität der Datenbankdaten, einschließlich Atomizität, Konsistenz, Isolation und Haltbarkeit. JDBC verwendet die Verbindungsschnittstelle, um die Transaktionssteuerung bereitzustellen (setAutoCommit, Commit, Rollback). Parallelitätskontrollmechanismen koordinieren gleichzeitige Vorgänge mithilfe von Sperren oder optimistischer/pessimistischer Parallelitätskontrolle, um eine Transaktionsisolation zu erreichen und Dateninkonsistenzen zu verhindern.

Wie verwende ich Datenbank-Callback-Funktionen in Golang? Wie verwende ich Datenbank-Callback-Funktionen in Golang? Jun 03, 2024 pm 02:20 PM

Durch die Verwendung der Datenbank-Rückruffunktion in Golang kann Folgendes erreicht werden: Ausführen von benutzerdefiniertem Code, nachdem der angegebene Datenbankvorgang abgeschlossen ist. Fügen Sie benutzerdefiniertes Verhalten durch separate Funktionen hinzu, ohne zusätzlichen Code zu schreiben. Rückruffunktionen stehen für Einfüge-, Aktualisierungs-, Lösch- und Abfragevorgänge zur Verfügung. Sie müssen die Funktion sql.Exec, sql.QueryRow oder sql.Query verwenden, um die Rückruffunktion verwenden zu können.

Wie verbinde ich mich mit Golang mit einer Remote-Datenbank? Wie verbinde ich mich mit Golang mit einer Remote-Datenbank? Jun 01, 2024 pm 08:31 PM

Über das Datenbank-/SQL-Paket der Go-Standardbibliothek können Sie eine Verbindung zu Remote-Datenbanken wie MySQL, PostgreSQL oder SQLite herstellen: Erstellen Sie eine Verbindungszeichenfolge mit Datenbankverbindungsinformationen. Verwenden Sie die Funktion sql.Open(), um eine Datenbankverbindung zu öffnen. Führen Sie Datenbankoperationen wie SQL-Abfragen und Einfügeoperationen durch. Verwenden Sie „defer“, um die Datenbankverbindung zu schließen und Ressourcen freizugeben.

See all articles