2012-04-07 14 views
1

Mehr von einer Frage bezüglich des Datenbankmodells für ein bestimmtes Problem. Das Problem ist wie folgt:Variable Menge von Sätzen als SQL-Datenbanktabellen

Ich habe eine Reihe von Objekten, die die Zeilen in einer festen Tabelle bilden, sie sind alle eindeutig (natürlich). Man möchte Sets erstellen, die eine variable Menge dieser gespeicherten Objekte enthalten. Diese Sets sind benutzerdefiniert und daher nicht hartcodierbar. Jeder Satz wird durch eine Nummer gekennzeichnet.

Meine Frage ist: welchen Rat können Sie erfahren SQL-Programmierer geben mir eine solche Funktion zu implementieren. Mein direktestes Vorgehen wäre die Erstellung einer Tabelle für jede solche Menge mit Hilfe von Tabellenvariablen oder temporären Tabellen. Schließlich eine bereits vorhandene Tabelle, die die Namen der Mengen enthält (als eine Möglichkeit, dem Benutzer mitzuteilen, welche Mengen gegenwärtig in der Datenbank vorhanden sind).

Wenn nicht effizient, in welche Richtung würde ich suchen, um dies zu lösen?

Danke.

Antwort

1

Tabellenvariablen und temporären Tabellen sind kurzlebig, engen Bereich und wahrscheinlich nicht das, was Sie dafür verwenden möchten. Eine Tabelle für jedes Set ist auch keine Lösung, die ich wählen würde.

Mit dem Klang davon benötigen Sie drei Tabellen. Eine für Objekte, eine für Mengen und eine für die Beziehung zwischen Objekten und Mengen.

So etwas (mit SQL Server-Syntax, um die Tabellen zu beschreiben).

create table [Object] 
(
    ObjectID int identity primary key, 
    Name varchar(50) 
    -- more columns here necessary for your object. 
) 

go 

create table [Set] 
(
    SetID int identity primary key, 
    Name varchar(50) 
) 

go 

create table [SetObject] 
(
    SetID int references [Object](ObjectID), 
    ObjectID int references [Set](SetID), 
    primary key (SetID, ObjectID) 
) 

Hier ist die m: m Relation als hübsches Bild: enter image description here