Entwickler-Ecke
Datenbanken - Datenbankstruktur erstellen ... vorher Klasse nun DB
NOS1971 - Sa 08.03.14 13:50
Titel: Datenbankstruktur erstellen ... vorher Klasse nun DB
Hallo zusammen,
dank einiger Tipps von Euch habe ich es soweit hinbekommen das zumindest schon einmal parallel meine Daten aus der URL Analyse in der DB landen ... doch in der Strukturierung der DB habe ich ein paar Probleme ... In meiner ursprünglichen Klasse habe ich die normalen Daten der URL in Variablen gehabt und zum Beispiel eine Liste der H Tags als TStringList oder eine Liste der PartneSites als TStringlist ... Wie bekomme ich nun eine Art TStringlist oder eine Vergleichbare Datenstruktur in einen Datensatz einer Tabelle ?
Hier mal meine ursprüngliche Klasse
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63:
| TWebURLDataItem = packed class strict private var FOrigURLString: string; FPageRank: integer; FAnalysed: integer; FURLLinkString: string; FHTTPStatus: integer; FURLType: integer; FExternalLinks: integer; FInLinks : integer; FRootURL: string; FURLString: string; FContentLength: int64; FInternalLinks: integer; FNeededAnalysisTime: int64; FServer: string; FContentType: string; FIsFeed: integer; FURLLocation: integer; FCharSet: string; FDate: extended; FURLExtension: string; FURLText : string; FRetryCount: integer; FConnectionStatusReport: TStringList; FParentSites: TStringList; FHTags: TStringList; FURLTags: TStringList; FRedirectList: TStringlist; public constructor Create; destructor Destroy; override; property RootURL: string read FRootURL write FRootURL; property URLString: string read FURLString write FURLString; property OrigURLString: string read FOrigURLString write FOrigURLString; property URLLinkString: string read FURLLinkString write FURLLinkString; property URLType: integer read FURLType write FURLType; property Analysed: integer read FAnalysed write FAnalysed; property HTTPStatus: integer read FHTTPStatus write FHTTPStatus; property PageRank: integer read FPageRank write FPageRank; property InternalLinks: integer read FInternalLinks write FInternalLinks; property ExternalLinks: integer read FExternalLinks write FExternalLinks; property InLinks: integer read FInLinks write FInLinks; property ContentLength: int64 read FContentLength write FContentLength; property ParentSites: TStringList read FParentSites write FParentSites; property HTags: TStringList read FHTags write FHTags; property URLTags: TStringList read FURLTags write FURLTags; property NeededAnalysisTime: int64 read FNeededAnalysisTime write FNeededAnalysisTime; property Server: string read FServer write FServer; property ContentType: string read FContentType write FContentType; property IsFeed: integer read FIsFeed write FIsFeed; property URLLocation: integer read FURLLocation write FURLLocation; property CharSet: string read FCharSet write FCharSet; property Date: extended read FDate write FDate; property URLExtension: string read FURLExtension write FURLExtension; property RetryCount: integer read FRetryCount write FRetryCount; property URLText: string read FURLText write FURLText; property RedirectList: TStringList read FRedirectList write FRedirectList; property ConnectionStatusReport: TStringList read FConnectionStatusReport; end; PWebURLDataItem = ^TWebURLDataItem; |
Ich hoffe Ihr könnt mir hier das ein oder andere Stichwort dazu geben.
Grüße und Dank ins Forum,
Andreas
WasWeißDennIch - Sa 08.03.14 14:16
Ich bin nicht ganz sicher, ob ich das richtig verstanden habe, aber der Beschreibung nach scheint es sich um eine 1:n-Beziehung zu handeln, d.h. einem Datensatz in Tabelle A sind keiner, einer oder mehrere Datensätze aus Tabelle B zugeordnet (man spricht hier auch von Master/Detail). Das ist über Fremdschlüssel einfach lösbar:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Mastertabelle ============= ID integer (PK autoinc) weitere Daten
Detailtabelle ============= ID integer (PK autoinc) Master_ID (FK auf Mastertabelle.ID) weitere Daten |
Über die Fremdschlüssel (FK) lässt sich so ermitteln, welche Datensätze zu einem bestimmten Datensatz in der Mastertabelle gehören.
NOS1971 - Sa 08.03.14 15:00
Also das Problem ist das
der MasterDatensatz bis zu 500.000 mal vorkommen kann ..... jeder davon enthält eine völlig unterschiedliche anzahl von ParentSites, H-Tags etc. die mehr als nur ein detail haben .... also ist es nicht ganz 1 zu N wenn ich das als db rookie so richtig verstehe ...
WasWeißDennIch - Sa 08.03.14 15:16
Es gibt je Mastersatz n Detailsätze, oder? Die Anzahl der Masterdatensätze spielt bei der Beziehung untereinander ja keine Rolle. Vielleicht mal ein paar Beispieldaten:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| Mastertabelle:
ID | Daten ========== 1 | AAAA 2 | BBBB 3 | CCCC 4 | DDDD
Detailtabelle:
ID | MasterID | Daten ===================== 1 | 1 | 123 2 | 1 | 234 3 | 2 | 987 4 | 3 | 42 5 | 3 | 456 6 | 3 | 123 |
Wir haben also 4 Masterdatensätze. Zu 1 gibt es zwei, zu 2 einen, zu 3 drei und zu 4 überhaupt keinen Detailsatz. Vielleicht solltest Du Dich zunächst in
relationale Datenbanken [
http://de.wikipedia.org/wiki/Relationale_Datenbank] und
Normalisierung [
http://de.wikipedia.org/wiki/Normalisierung_%28Datenbank%29] einlesen, sonst gibt das später nur Kummer, wenn Änderungen an der DB erfolgen sollen.
NOS1971 - Sa 08.03.14 15:25
Zunächst einmal danke für die Links ... ich denke ich sollte mich wirklich intensiver damit befassen bevor ich da weitermache und die details einbaue ...
So wie Du es dargestellt hast ist es vom Prinzip richtig .... bei den ParentSites ist es ja letzten endes so das ich quasi nur die id des datensatzes der mastertabelle speichern muss ... also habe ich quasi eine tabelle die die master id's mit den anderen verknüpft ...
ich sage erst einmal recht herzlichen Dank bis hierher und mache mich erstmal fitter mit DB's ...
Liebe Grüße,
Andreas
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!