SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Frage zur Planung von Datenbanken/Tabellen (Meta-Daten zu Dokumenten)

Unbeantwortet Dieser Beitrag hat 6 Antworten

Ohne Rang
58 Beiträge
Rolf Schneider erstellt 25 Jan. 2010 13:09
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich bin auf der Suche nach Empfehlungen für den Umgang mit "eigenen" Metadaten und deren Speicherort.

Konkret geht es darum, dass ich eine Erweiterung für SharePoint 2007 schreibe, die eigene Metadaten speichert. Die Metadaten gehören zu Dokumenten. Da diese eigenen Metadaten allerdings über ein eigenes SPField gespeichert werden, die ein wenig Programmlogik beinhalten, möchte ich diese Metadaten von den Metadaten vom SharePoint trennen. Ich möchte also keine neuen Spalten in einer Dokumenten-Bibliothek anlegen, weil man sonst unsinnige Daten eingeben könnte.

Mein Ansatz war, dass ich auf dem DBMS, das SharePoint verwendet, eine eigene neue Datenbank erstelle. Dort sollten nur Daten gespeichert werden, die nicht selbst vom SharePoint manipuliert werden (z.B. beim Crawlen oder sonstigen Diensten, die auf die Datenbank zugreifen.

Unser DB-Admin war anderer Meinung: er meinte, dass ich die Tabellen in einer vorhandenen DB des SharePoint ablegen soll. Da ich nicht weiss, was SharePoint mit "fremden" Tabellen macht möchte ich hier zunächst fragen, ob das sinnvoll ist oder zu Problemen führen kann.

Wenn man die Metadaten in den Dokumenten-Bibliotheken speichert würde mich interessieren, ob man diese Spalten irgendwie schützen kann. Schützen in dem Sinn, dass z.B. die Berechtigung für Änderungen auf einen Anwendungs-Account eingeschränkt sind, damit selbst Admins dort nichts manuell verändern können.

Zur Vollständigkeit: es geht um ca. 3-4 Daten, die ich auch als Spalten in den Metadaten eines Dokuments verwalten könnte.

Gibt es dazu Empfehlungen, Meinungen oder gar Erfahrungen (positive wie auch negative)?

Gruß,
Rolf

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 25 Jan. 2010 13:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Warum überläßt Du das Speichern Deiner Daten nicht einfach SharePoint? Wenn Du schon einen eigenen Feldtyp hast, dann kann der doch trotzdem die vorhanden Möglichkeiten nutzen und so immer konsistent bleiben - ohne daß Du Dich selbst darum kümmern mußt. Aber sei's drum, es ist Dein eigener Feldtyp und damit bestimmst Du auch selbst, wer wann was ändern darf...

Zum Thema eigene Tabellen in der SharePoint-DB: würde ich niemals machen. Wenn schon eigene Tabellen, dann auch eigene DB.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
58 Beiträge
Rolf Schneider Als Antwort am 25 Jan. 2010 15:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Metadaten zu Metadaten - das ist schon richtig. Inzwischen denke ich, dass das die geschickteste Lösung ist. Mir ist nur noch nicht ganz klar, wie ich einen Feldtyp (?) erstelle, der aus mehreren Datentypen besteht. Wahrscheinlich dann über ein BaseFieldControl. Bisher habe ich nur ein TextField erstellt (siehe ISBN-Beispiel von Microsoft). Gespeichert werden muss aber mind.:

  • eine ID als String
  • ein Datum
  • ein Integerwert (von mir aus als String)
  • ein weiteres Datum

Eigene Tabellen: ganz deiner Meinung. In den DBs vom SharePoint will ich nicht rumpfuschen, man weiss ja nie, was das für Konsequenzen bei Updates oder ähnlichem hat.

Ich werde es also in den Metadaten des Dokuments speichern, mal schauen wie das geht. Wenn ich in meiner Control-Klasse, die von BaseFieldControl erbt mehrere Datentypen speichern will, wie gehe ich dann vor? Hat mir jemand ein Beispiel für eine Implementierung eines BaseFieldControls, am besten in VB (C# geht auch, aber ich MUSS hier ja VB einsetzen :/ ).

Kann ich das Ganze als Websitefeature verpacken? Oder bin ich da auf dem Holzweg? Idee wäre, dass man ein Websitefeature erstellt, das dann aktiviert und eben verwenden kann, in den Metadaten eines Dokuments also ein eigen-implementierter "Bereich" mit den nötigen Controls erscheint.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 25 Jan. 2010 16:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du kannst Dein Feld von SPFieldMultiColumn ableiten, dann kannst Du relativ einfach mehrere Werte speichern. Im FieldControl erzeugst Du einfach die Controls, die zur Eingabe benötigt werden, evtl. in einer Tabelle o.ä.

[quote user="sledge"]Kann ich das Ganze als Websitefeature verpacken?[/quote]

Ja, kannst Du.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
58 Beiträge
Rolf Schneider Als Antwort am 26 Jan. 2010 12:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das mit der Klasse Microsoft.SharePoint.SPFieldMultiColumnValue find ich zwar albern, aber es funktioniert. Danke für den Hinweis!

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Jan. 2010 15:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Warum albern? Du kannst natürlich auch ein SPFieldText nehmen und Deine Einzelwerte selbst mit Trennzeichen in einen einzigen String schreiben. SPFieldMultiColumn macht auch nichts anderes...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
58 Beiträge
Rolf Schneider Als Antwort am 26 Jan. 2010 23:59
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das ist natürlich richtig. Irgendwie muss man's speichern, nur war mir der gespeicherte String etwas suspekt, vom Syntax her. Immerhin bleibt einem mit SPFieldMulticolumn das Escapen von Zeichen in so einem String erspart - das ist ja schon was wert.