Inhaltsverzeichnis
Antwortinhalt:
Lösung
Heim Backend-Entwicklung PHP-Tutorial Wie können alle Benutzer eine Tabelle in der Datenbank gemeinsam nutzen, die Bestellnummer jedes Benutzers jedoch einen unabhängigen Namensraum haben?

Wie können alle Benutzer eine Tabelle in der Datenbank gemeinsam nutzen, die Bestellnummer jedes Benutzers jedoch einen unabhängigen Namensraum haben?

Aug 04, 2016 am 09:20 AM
java mysql php sql 数据库

1. Tatsächliches Szenario:
Die Bestelltabelle in der Datenbank ist öffentlich und alle Benutzer befinden sich in einer Bestelltabelle.
Wie kann ich die Bestellnummer jedes Benutzers zu einem unabhängigen Namensraum machen? Wenn Benutzer A beispielsweise zwei Bestellungen aufgibt, sollten seine Bestellnummern C001 und C002 sein. Wenn Benutzer B drei Bestellungen aufgibt, sollte die Startposition seiner Nummer immer noch C001 sein, nicht C003. Alle seine Bestellnummern sollten C001 sein. C003.
Wie geht das?
Müssen wir unter jedem Benutzer ein Feld für die Anzahl der Bestellungen speichern, die er aktuell geöffnet hat, und es dann zuerst auslesen, eines hinzufügen und es dann jedes Mal wieder speichern? Das ist nicht gut ... Gibt es eine bessere Möglichkeit, dies auf der Datenbankseite zu tun? Ich habe anscheinend gehört, dass jemand über die Verwendung von Datenbankfunktionen oder -triggern gesprochen hat?

2. Wenn die Datenbank das oben Genannte kann, ist dieser C001 im Allgemeinen im Primärschlüsselfeld vorhanden? Oder ist der Primärschlüssel immer noch ein inkrementeller Primärschlüssel vom numerischen Typ, der lediglich ein Feld zur Tabelle hinzufügt, um dieses C001 zu speichern?

Hinweis: Es befindet sich in der MySQL-Datenbank.

Antwortinhalt:

1. Tatsächliches Szenario:
Die Bestelltabelle in der Datenbank ist öffentlich und alle Benutzer befinden sich in einer Bestelltabelle.
Wie kann ich die Bestellnummer jedes Benutzers zu einem unabhängigen Namensraum machen? Wenn Benutzer A beispielsweise zwei Bestellungen aufgibt, sollten seine Bestellnummern C001 und C002 sein. Wenn Benutzer B drei Bestellungen aufgibt, sollte die Startposition seiner Nummer immer noch C001 sein, nicht C003. Alle seine Bestellnummern sollten C001 sein. C003.
Wie geht das?
Müssen wir unter jedem Benutzer ein Feld für die Anzahl der Bestellungen speichern, die er aktuell geöffnet hat, und es dann zuerst auslesen, eines hinzufügen und es dann jedes Mal wieder speichern? Das ist nicht gut ... Gibt es eine bessere Möglichkeit, dies auf der Datenbankseite zu tun? Ich habe anscheinend gehört, dass jemand über die Verwendung von Datenbankfunktionen oder -triggern gesprochen hat.

2. Wenn die Datenbank das oben Genannte kann, ist dieser C001 im Allgemeinen im Primärschlüsselfeld vorhanden? Oder ist der Primärschlüssel immer noch ein inkrementeller Primärschlüssel vom numerischen Typ, der lediglich ein Feld zur Tabelle hinzufügt, um dieses C001 zu speichern?

Hinweis: Es befindet sich in der MySQL-Datenbank.

1: Es ist nicht erforderlich, sie auf diese Weise in der Datenbank zu speichern. Sie müssen nur alle Bestellungen durchlaufen und sie der Reihe nach anzeigen.
2: Fügen Sie 静态成员变量 zu jedem Benutzerattribut hinzu und fügen Sie der Datenbank entsprechend Felder hinzu. Die hinzugefügten Daten entsprechen jeweils Ihren Angaben.

Was das Poster bedeutet, ist die Einrichtung einer einheitlichen Auftragsverwaltungsbibliothek für verschiedene Kundenkonten. Verschiedene Konten können nur ihre eigenen Bestellungen sehen, was in gewisser Weise dem Cloud-ERP ähnelt.

Die Bestelltabelle kann eine redundante Primärschlüssel-ID haben. Im Hinblick auf die Eindeutigkeit der Datenspeicherung kann sie als Bestellcode-Benutzer-ID zur eindeutigen Bestätigung eines Datenelements angesehen werden.

Wenn Sie das Design der Tabellenstruktur optimieren müssen, können Sie automatisch eine Bestelltabelle für jeden Benutzer erstellen und die Bestelldaten jedes Benutzers trennen. Der Tabellenname ähnelt jedes Mal dem entsprechenden Tabellennamen Nach Angaben des Benutzers werden die Daten abgerufen, die endgültige umfassende Hintergrundstatistik aller Benutzerauftragsdaten kann jedoch etwas problematischer sein.

Wie können Sie die Einzigartigkeit Ihrer Bestellung sicherstellen

Wenn die Datenbank gemäß der Bedeutung des Titels gestaltet ist, führt nur der Vorgang Suchaufträge zu einer Ausnahme. Denn anhand der Bestellnummer können wir die eindeutige Bestellung nicht ermitteln.
Der Wert des Primärschlüssels wird verwendet, um einen Datensatz in der Tabelle eindeutig zu identifizieren.

(Über Ihr Projekt
Ich schlage vor:
Der Primärschlüssel der Bestelltabelle kann OrderId sein
und der Primärschlüssel der Benutzertabelle kann UserId sein
Ich denke, Ihr Problem sollte darin liegen Die Datenbanktabelle Für ein grundlegendes Verständnis wird empfohlen, den relevanten Inhalt der Datenbank Normalisierung )

zu lesen.

  1. Verwenden Sie eine Bestell-ID-Tabelle, um die IDs aller nächsten Bestellungen aller Benutzer zu speichern. Wenn Sie dies als problematisch empfinden, wird empfohlen, die Zeit als Teil der Bestellnummer zu verwenden.

  2. kann nicht als Primärschlüssel verwendet werden. Es gibt einen Grundsatz beim Primärschlüsseldesign: Er muss für das Unternehmen irrelevant sein. Daher ist der Primärschlüssel immer eine bedeutungslose automatisch inkrementierende ID oder ähnliches.

Ich verstehe nicht, welchen tatsächlichen Bedarf Ihre Frage lösen soll

Das Design der Tabellenstruktur muss den Anforderungen der drei grundlegendsten Paradigmen entsprechen. Der Zweck der drei Paradigmen besteht darin, sicherzustellen, dass es keine Redundanz oder Abhängigkeit zwischen Feldern gibt. Ich werde die oben genannten Probleme nicht wiederholen. Ich schlage vor, dass Sie Ihre Anforderungen sorgfältig klären, sonst haben wir es falsch verstanden. Sie formulieren die Frage um. Oder veröffentlichen Sie direkt Ihre Tabellenerstellungserklärung.

Sie können einen gemeinsamen Primärschlüssel verwenden, um uid und cid zu kombinieren, was die Eindeutigkeit gewährleisten kann. Beachten Sie jedoch bitte die folgenden zwei Punkte:
1. Um die automatische Inkrementierung des gemeinsamen Primärschlüssels von MySQL zu verwenden, müssen Sie MyISAM als Speicher-Engine verwenden.
2. Wenn Sie eine Union zum automatischen Inkrementieren des Primärschlüssels verwenden, darf der Auto-Inkrementierungsschlüssel nicht der Schlüssel ganz links im Primärschlüssel sein.

Fügen Sie einfach einen user_owner_order_key zur Bestelltabelle hinzu und schreiben Sie dann Ihren eigenen Code, um die Austauschlogik zwischen C001 und der echten order_id zu verwalten.

<code>//伪码 
$user_owner_order_id = (select count(*) from order where user = $uid and order_id < $currentOrderId order by order_id asc) + 1;
$user_owner_order_key = $uid . fillZero($user_owern_order_id);</code>
Nach dem Login kopieren

Um über ein anderes Problem zu sprechen: 第三方支付kann im Allgemeinen nicht mehrmals für 同一个订单号 bezahlen, daher ist es am besten, sorgfältig zu überlegen, ob Sie dies tun.

Lösung


  1. Die Benutzertabelle kann ein Feld zum Speichern der Bestellmenge enthalten. Fügen Sie bei jeder neuen Bestellung eins zu diesem Wert hinzu und aktualisieren Sie ihn dann wieder

  2. Die neue Bestellung erhält die Anzahl der bestehenden Bestellungen plus eins. Beim Löschen der Bestellung muss sie jedoch vorläufig gelöscht werden
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)

PHP und Python: Vergleich von zwei beliebten Programmiersprachen PHP und Python: Vergleich von zwei beliebten Programmiersprachen Apr 14, 2025 am 12:13 AM

PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

Der aktuelle Status von PHP: Ein Blick auf Webentwicklungstrends Der aktuelle Status von PHP: Ein Blick auf Webentwicklungstrends Apr 13, 2025 am 12:20 AM

PHP bleibt in der modernen Webentwicklung wichtig, insbesondere in Content-Management- und E-Commerce-Plattformen. 1) PHP hat ein reichhaltiges Ökosystem und eine starke Rahmenunterstützung wie Laravel und Symfony. 2) Die Leistungsoptimierung kann durch OPCACHE und NGINX erreicht werden. 3) Php8.0 führt den JIT -Compiler ein, um die Leistung zu verbessern. 4) Cloud-native Anwendungen werden über Docker und Kubernetes bereitgestellt, um die Flexibilität und Skalierbarkeit zu verbessern.

Die dauerhafte Relevanz von PHP: Ist es noch am Leben? Die dauerhafte Relevanz von PHP: Ist es noch am Leben? Apr 14, 2025 am 12:12 AM

PHP ist immer noch dynamisch und nimmt immer noch eine wichtige Position im Bereich der modernen Programmierung ein. 1) Einfachheit und leistungsstarke Unterstützung von PHP machen es in der Webentwicklung weit verbreitet. 2) Seine Flexibilität und Stabilität machen es ausstehend bei der Behandlung von Webformularen, Datenbankoperationen und Dateiverarbeitung; 3) PHP entwickelt sich ständig weiter und optimiert, geeignet für Anfänger und erfahrene Entwickler.

Zweck von PHP: Erstellen dynamischer Websites Zweck von PHP: Erstellen dynamischer Websites Apr 15, 2025 am 12:18 AM

PHP wird verwendet, um dynamische Websites zu erstellen. Zu den Kernfunktionen gehören: 1. Dynamische Inhalte generieren und Webseiten in Echtzeit generieren, indem Sie eine Verbindung mit der Datenbank herstellen; 2. Verarbeiten Sie Benutzerinteraktions- und Formulareinreichungen, überprüfen Sie Eingaben und reagieren Sie auf Operationen. 3. Verwalten Sie Sitzungen und Benutzerauthentifizierung, um eine personalisierte Erfahrung zu bieten. 4. Optimieren Sie die Leistung und befolgen Sie die Best Practices, um die Effizienz und Sicherheit der Website zu verbessern.

PHP in Aktion: Beispiele und Anwendungen in realer Welt PHP in Aktion: Beispiele und Anwendungen in realer Welt Apr 14, 2025 am 12:19 AM

PHP wird in E-Commerce, Content Management Systems und API-Entwicklung häufig verwendet. 1) E-Commerce: Wird für die Einkaufswagenfunktion und Zahlungsabwicklung verwendet. 2) Content -Management -System: Wird für die Erzeugung der dynamischen Inhalte und die Benutzerverwaltung verwendet. 3) API -Entwicklung: Wird für die erholsame API -Entwicklung und die API -Sicherheit verwendet. Durch Leistungsoptimierung und Best Practices werden die Effizienz und Wartbarkeit von PHP -Anwendungen verbessert.

PHP: Datenbanken und serverseitige Logik bearbeiten PHP: Datenbanken und serverseitige Logik bearbeiten Apr 15, 2025 am 12:15 AM

PHP verwendet MySQLI- und PDO-Erweiterungen, um in Datenbankvorgängen und serverseitiger Logikverarbeitung zu interagieren und die serverseitige Logik durch Funktionen wie Sitzungsverwaltung zu verarbeiten. 1) Verwenden Sie MySQLI oder PDO, um eine Verbindung zur Datenbank herzustellen und SQL -Abfragen auszuführen. 2) Behandeln Sie HTTP -Anforderungen und Benutzerstatus über Sitzungsverwaltung und andere Funktionen. 3) Verwenden Sie Transaktionen, um die Atomizität von Datenbankvorgängen sicherzustellen. 4) Verhindern Sie die SQL -Injektion, verwenden Sie Ausnahmebehandlung und Schließen von Verbindungen zum Debuggen. 5) Optimieren Sie die Leistung durch Indexierung und Cache, schreiben Sie hochlesbarer Code und führen Sie die Fehlerbehandlung durch.

PHP und Python: Code Beispiele und Vergleich PHP und Python: Code Beispiele und Vergleich Apr 15, 2025 am 12:07 AM

PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

So stellen Sie eine Verbindung zur Datenbank von Apache her So stellen Sie eine Verbindung zur Datenbank von Apache her Apr 13, 2025 pm 01:03 PM

Apache verbindet eine Verbindung zu einer Datenbank erfordert die folgenden Schritte: Installieren Sie den Datenbanktreiber. Konfigurieren Sie die Datei web.xml, um einen Verbindungspool zu erstellen. Erstellen Sie eine JDBC -Datenquelle und geben Sie die Verbindungseinstellungen an. Verwenden Sie die JDBC -API, um über den Java -Code auf die Datenbank zuzugreifen, einschließlich Verbindungen, Erstellen von Anweisungen, Bindungsparametern, Ausführung von Abfragen oder Aktualisierungen und Verarbeitungsergebnissen.

See all articles