2017-12-29 12 views
1

Ich muss Tabellen erstellen, um Dokumente wie jpg, doc, msg, pdf mit einem SQL Server 2008 zu verwalten.Datenbank-Modell zum Verwalten von Dokumenten

Da ich sql Server-Unterstützung .jpg Bilder kenne, ist meine Frage, ob es möglich ist, andere Arten von Dateien in eine db hochzuladen.

Dies ist ein Beispiel für die Tabelle (könnte neu definiert werden, wenn sie benötigt wird).

Document : document_id int(10) 
      name  varchar(10) 
      type  image (doesnt know how it might works) 

Das sind die Anfangswerte für eine Tabelle, aber ich weiß nicht, wie man es für irgendeinen Typ nützlich macht.

pd: muss ich ein Verzeichnis zuweisen, um diese Dokumente auf dem Server zu speichern?

+1

schauen Sie sich diesen https: // stackoverflow an.com/questions/15356154/datei-stream-vs-lokal-save-in-sql-server – Horaciux

+0

Verwenden Sie nicht den Image-Datentyp. Es ist seit einiger Zeit veraltet (seit 2008, wenn ich mich richtig erinnere). Verwenden Sie stattdessen 'varbinary'. – Larnu

+4

Der sicherere Weg besteht darin, die Dateien auf einem Dateiserver und den Pfad in der Datenbank zu speichern. –

Antwort

3

Sie können fast jeden Dateityp in einer SQL Server-Tabelle speichern ... wenn Sie dies tun, werden Sie es mit ziemlicher Sicherheit bereuen.

Speichern Sie stattdessen einen Metadaten/einen Zeiger auf die Datei in Ihrer Datenbank, und speichern Sie die Dateien selbst auf einer Festplatte direkt dort, wo sie hingehören.

Ihre Datenbankgröße - und damit die Hardware, die für die Ausführung benötigt wird - wird sehr schnell wachsen, so dass Ihnen hohe Kosten entstehen, die Sie nicht benötigen.

+0

gibt es etwa 10 Benutzer, die dieses System tatsächlich nutzen und rund 100 Transaktionen im gesamten Jahr, etwa 100-1000 Dokumente im Zusammenhang mit jpg, doc, msg oder pdf. – alex

+0

Also wird es wahrscheinlich funktionieren, und kann sogar für eine ganze Weile funktionieren, auch wenn Ihr Verkehr und Bedürfnisse aufgehen - aber ich denke immer noch nicht, dass es eine großartige Lösung ist; Es wird funktionieren, bis es nicht mehr funktioniert. –

+0

Ich muss E.J. Dies ist ein, was ich eine TBS (Taco Bell Solution) nenne ... scheint eine gute Idee zu sein, ist aber selten. –

1

Verwenden Filestream

https://docs.microsoft.com/en-us/sql/relational-databases/blob/filestream-sql-server

Ich weiß, dass eine Link-einzige Antwort ist keine Antwort, aber ich kann nicht glauben, dass niemand es noch

+1

Link nur oder nicht, dies ist die beste Lösung: Es hat alle Vorteile der integrierten Datenbank-Management (insbesondere Backup und Recovery) im Umgang mit Menschen (scheinbar philosophisch) Einwand gegen die Speicherung von Dateien in einer Datenbank. – APC

1
erwähnt

Das richtige Datenbank-Design-Muster ist nicht, um Dateien in DBMS zu speichern. Sie sollten eine Art File Manager Subsystem entwickeln, um Ihre Dateien für all Ihre Projekte zu verwalten.

File Manager Subsystem
Dieses Subsystem sollte wiederverwendbare, Erweiterbar, sicher und etc. Ihre Projekte, die dieses Subsystem, Dateien speichern zu wollen nutzen können.
Dateien können jeder in gespeichert werden, wo wie Lokale Fest, Network Drive, Externe Laufwerke, Wolken und etc. So sollte dieses Subsystem Design sein alle Arten von Anfragen zu unterstützen.

Dieses Subsystem (Sie können durch Hinzufügen einer Menge Features, um es z. B. die Überprüfung von doppelten Dateien, ... das erwähnte Subsystem verbessern), ein Eindeutiger Schlüssel für jede Datei erzeugen soll. Nach dem Hochladen und Speichern der Dateien sollte das Subsystem diesen Schlüssel generieren.

Jetzt, können Sie diese Eindeutiger Schlüssel verwenden in der Datenbank (anstelle von Datei) zu speichern. Jedes Mal, wenn Sie die Datei erhalten möchten, können Sie den Unique Key aus der Datenbank abrufen und die Anforderung, die Datei vom Subsystem mit einem eindeutigen Schlüssel abzurufen.