Frage

Ich habe Objekte, die Ordner und ich frage mich, ob sie in der Datenbank dargestellt werden sollen.

Auf der einen Seite scheint es, wie der einfachste Weg wäre nicht Ordner Objekte darzustellen und speichern nur einen Pfadwert für Objekte in einem Ordner enthalten. Probleme, die ich mit diesem zu sehen ist, dass Sie nicht einen Ordner, dessen Nachkommen nicht enthalten alle Elemente bestehen können, die nicht zu große Sache ist. Ich habe auch keine klare Vorstellung davon, wie die Ordnerhierarchie laden anzuzeigen (wie in einem TreeView), ohne im Voraus alles in den Speicher geladen, was wahrscheinlich ein Performance-Problem wäre.

Die Alternative ist eine „Ordner“ Tabelle wieder auf die übergeordneten Ordner mit Referenzen haben. Dies scheint, wie es funktionieren soll, aber ich bin nicht sicher, wie die Ordner mit dem gleichen Namen zu erlauben, solange sie einen Elternteil nicht teilen. Sollte das auch etwas sein, das DB sollte mich mit seinem in Bezug auf oder ist das etwas, was ich sollte nur in der die Business-Logik erzwingen?

War es hilfreich?

Lösung

Die Idee ist so etwas wie dieser (selbst verweis):

CREATE TABLE FileSystemObject ( 
    ID int not null primary key identity,
    Name varchar(100) not null,
    ParentID int null references FileSystemObject(ID),
    constraint uk_Path UNIQUE (Name, ParentID),
    IsFolder bit not null
)

Andere Tipps

Werfen Sie einen Blick auf die ERD in der Mitte dieses Seite rel="nofollow . Unter Ausklammerung der Hierarchie in einer separaten Tabelle ermöglicht es Ihnen, mehrere Taxonomien zu unterstützen.

Zuerst fragen Sie sich, was der Zweck ist es, die Hierarchie in der Datenbank zu halten und welche Funktionen Sie damit gewinnen. Dann fragen Sie die Arbeit und Wartung berücksichtigen, dass es das zu tun, geht.

Wenn Sie einfach verwenden es einen Baum Kontrolle zu füllen, gibt es integrierte Steuerelemente, die direkt gegenüber dem Ordner System gehen. Wäre das besser für Sie? Haben Sie durch das Speichern in der Datenbank etwas darüber hinaus gewinnen? Wie beurteilen Sie die Datenbank synchron mit dem tatsächlichen Ordnersystem zu halten planen, die außerhalb des DB geändert werden können? Sofern Sie ein virtuelles Dateisystem bereitstellt kann es besser sein, nur in der Datenbank gespeichert ist direkt gegen die reale Sache mit dem entsprechenden Pfaden zu gehen.

SQL Server verfügt über einen hierarchyid Datentyp, der Unterstützung für hierarchische Strukturen hat. Funktioniert nur in der Vollversion, wohlgemerkt.

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