Ich würde gerne das „Nested-Set-Modell“ verwenden, muss aber eine GUID als Primärschlüssel haben.Wie komme ich ohne Ganzzahlen als pk aus?

StackOverflow https://stackoverflow.com/questions/662697

Frage

Ich bin nicht bewusst Wie tief wird mein Baum sein.Ich denke also, dass das NSM für mich geeignet ist, wenn ich einige Dokumente lese.In SQL geht dieses Modell davon aus, dass ich einen ganzzahligen Wert als Primärschlüssel verwende.Ich dachte daran, eine Zwillingstabelle zu erstellen, nur um die Ganzzahlen (PK, links, rechts) zu speichern, die durch eine Eins-zu-eins-Beziehung mit der realen Tabelle verbunden sind.Die Dinge werden komplizierter und es ist eine Verschwendung von Speicherplatz, insbesondere wenn der Server nicht mir gehört und ich jedes Megabyte bezahlen muss.Helfen!!

AKTUALISIEREN

Exzellent!Fabelhaft!!Danke, Macka und Bill, ich könnte mir vorerst die Lektüre eines ganzen Buches ersparen.Celko ist eine zukünftige Bestellung bei Amazon.;-)

War es hilfreich?

Lösung

Es spielt keine Rolle, um welchen Typ es sich bei Ihrem Primärschlüssel handelt, da die linken/rechten Werte immer noch ganze Zahlen sind.z.B.

CREATE TABLE [dbo].[Demo](
    [ID] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_Demo_ID]  DEFAULT (newid()),
    [Name] [varchar](50) NOT NULL,
    [Lft] [int] NOT NULL,
    [Rgt] [int] NOT NULL,
 CONSTRAINT [PK_Demo] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

- Fügen Sie einige Testdaten hinzu

INSERT INTO demo(name,lft,rgt)
SELECT 'node1',1,6
UNION
SELECT 'node2a',2,3
UNION
SELECT 'node2b',4,5

- Überprüfen Sie, ob es funktioniert

SELECT *
FROM demo
WHERE lft>=2
ORDER BY lft

Andere Tipps

Als @macca schreibt, Die linken und rechten Werte sind keine Fremdschlüssel für Baumknoten, daher müssen sie nicht der gleiche Typ sein. Sie können Ganzzahlen sein, während der Baumknoten -Primärschlüssel eine GUID ist.

Celko schrieb auch "Bäume und Hierarchien in SQL für Smarties"Das detaillierter über das verschachtelte Set -Modell und andere Lösungen. Wenn Sie dieses Buch lesen, sparen Sie viel Zeit und viele Fehler.

Es gibt andere Lösungen zum Speichern hierarchischer Daten in einer Datenbank. Siehe meine Antwort hier:Was ist der effizienteste/eleganteste Weg, um einen flachen Tisch in einen Baum zu analysieren?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top