2016-04-12 4 views
0

Ich verwende MySQL und muss ein eindeutiges Gruppenlabel für verschiedene Kombinationen von Benutzern erstellen. Eine Gruppe benötigt nur mindestens einen Benutzer, aber die Benutzerkombinationen und die Gruppenbeschriftungen müssen eindeutig sein.MySQL-Struktur - Eindeutige Benutzergruppen

So zum Beispiel habe ich drei Benutzer und ihre IDs:

  • Larry (1)
  • Curly (2)
  • Moe (3)

Wir beginnen ab mit drei Gruppen, die jeweils einen einzelnen Benutzer enthalten. Die Namen können sein, was auch immer ein Systembenutzer setzt, also benutzen wir einfach ihre erste Initiale. Wir haben die Gruppen L, C und M. Aber jetzt habe ich eine Gruppe mit Larry und Curly, also möchte ich eine andere Gruppe namens LC. Larry und Curly können keine andere Gruppe mit einem anderen Namen bilden, aber sie können Moe dazu bringen, eine andere Gruppe zu bilden LCM.

Also jetzt, wenn ich die IDs 1 und 2 habe, möchte ich in der Lage sein, eine Abfrage zu machen, die die Gruppe LC ziehen wird.

Ich bin derzeit ratlos, wie das geht. Irgendwelche Vorschläge wären großartig.

Vielen Dank im Voraus!

Antwort

0

Kann LM mit LC koexistieren?

Haben Sie nicht mehr als 64 "Benutzer"? Wenn ja, dann könnten Sie "Gruppen" als SET Datentyp oder BIGINT UNSIGNED implementieren.

the_group SET ('Larry', 'Curly', 'Moe') 

unter der Decke, das ist die gleiche wie

the_group TINYINT UNSIGNED 

mit der unteren Bit Larry Bezug genommen wird, das nächste Bit Curly sein usw.

UNIQUE(the_group) 

, dass nur sagen Eine Zeile in der aktuellen Tabelle kann sich auf eine bestimmte Gruppe beziehen.

Sie haben nicht gesagt, welche Operationen Sie an Gruppen durchführen möchten, also werde ich nicht die verschiedenen Möglichkeiten erklären, wie Sie SETs oder INTS manipulieren können. mit diesen Semantiken.

Mehr

Oder vielleicht haben Sie diese Tabellen müssen:

  • Gruppen: group_id, user_id (many-to-many-Mapping-Tabelle)
  • Bestellungen: Bestellangaben ..., group_id
  • Benutzer: user_id, Benutzername, ...

Mit einem suitab le 3-table JOIN, können Sie alle "Benutzer", die für eine "Bestellung" verantwortlich sind, auflisten.Recommendation on many-to-many

+0

Das ist ziemlich interessant. Grundsätzlich werden Bestellungen in unser System eingegeben. Und je nachdem, welche Gruppe für die Bestellung zuständig ist, möchte ich den Gruppennamen abfragen können. Es kann eine LM-Gruppe geben, zusammen mit einer LC-Gruppe. Aber es wird nur eine Gruppe pro Bestellung sein. Wenn eine Bestellung aufgegeben wird, bei der Larry und Moe dafür verantwortlich sind, möchte ich herausfinden können, dass sie LM bilden. – kenshin9