2016-05-10 7 views
1

Ich habe ein paar Tabellen: Konten und Mitarbeiter, und ich versuche, eine Bewertung und Timestamp für jede gegebene Kombination zwischen Konten und Mitarbeitern zu speichern. Es sollte nicht möglich sein, dass zwei Bewertungen für dieselbe Zeitmarke für eine bestimmte Konto + Mitarbeiter-Kombination existieren.Definiere ich alle meine Schlüssel richtig? Muss ich einen Index hinzufügen?

Dies ist, was ich bisher:

CREATE TABLE main_table (
    _ID INTEGER PRIMARY KEY AUTOINCREMENT, 
    account_id INTEGER NOT NULL, 
    employee_id INTEGER NOT NULL, 
    rating REAL NOT NULL, 
    timestamp LONG NOT NULL, 
    FOREIGN KEY(account_id) REFERENCES ACCOUNTS(_ID), 
    FOREIGN KEY(employee_id) REFERENCES EMPLOYEES(_ID), 
    UNIQUE (account_id, employee_id, timestamp)); 

Ist dies der richtige Weg zu definieren, was ich tun möchte? Muss ich auch einen separaten Index erstellen?

CREATE INDEX main_table_idx ON main_table (account_id, employee_id, timestamp); 
+1

Wie ist das eine Java oder Android-Frage? – shmosel

+1

Was ist falsch mit dem 'UNIQUE' Index in Ihrer Tabelle? – shmosel

+0

@smossel Idk letztes Mal, das ich nicht eingeschlossen habe, dass ich Java/Android benutzte Ich wurde gezüchtigt, also ich schließe es immer jetzt ein – user6183183

Antwort

1

Eindeutige Einschränkungen werden mit einem eindeutigen Index implementiert.

Daher ist die separate Erstellung des Index nicht erforderlich.

Wie in den documentation:

In den meisten Fällen UNIQUE und PRIMARY KEY-Einschränkungen durch implementiert werden in der Datenbank einen eindeutigen Index zu erstellen. (Ausnahmen sind INTEGER Primärschlüssel und Primärschlüssel auf OHNE ROWID Tabellen.)

Basierend auf Ihrer Beschreibung scheint die eindeutige Einschränkung richtig.

+0

Ich bin nicht sicher, wie dies die Frage beantwortet, wie angegeben – user6183183

+0

@ user6183183. . . "Muss ich auch einen separaten Index erstellen?" –

+0

Ich verstehe nicht, was dieses Dokumentations-Snippet sagt. Was sagt es in einfachem Englisch? – user6183183

Verwandte Themen