2009-06-15 5 views
1

Ich möchte die Tabellenkalkulationsdaten in der Datenbank speichern, so jetzt verwende ich Schlüssel/Wert-Muster, um die gleiche zu speichern, aber es dauert zu viel Zeit, um es aus der Datenbank abzurufen, wenn Daten sind riesig. Hat jemand den besten Weg, das Gleiche zu tun. Wie speichert Google seine Tabellendaten?Speichern Sie Tabellenkalkulation Art von Daten in SQL-Datenbank

Normalerweise muss ich 30 bis 40 Spalten und 10.000 Zeilen auf der Webseite mit Seitengröße 500 oder 1000 für die Seitenumbruch zeigen. Die Daten werden für die Werbebuchung mit Preisfindung verwendet.

Meine aktuelle Datenbankstruktur ist wie folgt.

Spalte Tabelle COLUMN_ID int Column_Name nvarchar (50)
column_type nvarchar (50)

Wert Inhalt Tabelle criteria_id int column_id int row_id int column_contents nvarchar (100)

+0

Seien Sie etwas genauer. Welche Art von Daten speichern Sie? Können Sie uns ein Beispiel für Ihre Tabelle geben? –

+0

Warum wird ein Schlüssel/Wert-Speicher verwendet? es sollte schnell sein. – Pierre

+2

OMG was? Willst du das wirklich machen ?? –

Antwort

2

A naive Schema für die Speicherung eines sprea dsheet:

create table spreadsheet 
(
id INTEGER primary key, 
name TEXT UNIQUE not null 
); 

create table cell 
(
id INTEGER primary key, 
spreadsheet_id INTEGER NOT NULL REFERENCES spreadsheet(id), 
row INTEGER not null, 
col INTEGER not null, 
content TEXT NOT NULL 
); 
+0

Ich sehe nicht die Notwendigkeit für die 'ID' in der Zelle, konnte nicht der Primärschlüssel eingeschaltet sein (Spreadsheet_id, Zeile, Spalte)? –

+0

Ich weiß, dass es darüber eine Debatte gibt, und diejenigen auf der anderen Seite fühlen sich genauso stark, aber IMHO Compound-Schlüssel sind böse (abgesehen von M-> M Auflösung Tabellen). – RolandTumble

+0

Dank Pierre, Ich habe die ähnliche Struktur jetzt, aber es gibt mir das Leistungsproblem, wenn ich die große Menge an Daten auf der Webseite mit Paginierung laden muss. Normalerweise muss ich 30 bis 40 Spalten und 10.000 Zeilen anzeigen (Seitengröße = 1000) –

0

Wenn Sie gerade zu laden und es zu speichern, es nicht viel abfragt, würde ich ein XML-Feld für das gesamte Blatt oder jeder Seite oder zumindest jede Zeile empfehlen.

Meine andere Frage ist, wie fragen Sie das, um Ihr Blatt zu füllen? Verwenden Sie Schleifen und öffnen Sie separate Abfragen für jede Zeile oder Spalte?

Ihr Entwurf möglicherweise suboptimal, aber es sollte tatsächlich für den Datensatz, den Sie beschreiben, anständig, IMHO.

+0

Zuerst hole ich alle Daten aus der Datenbank und gehe dann durch, um auf der Seite in Gitterstruktur zu zeigen. –

0

Angesichts der Tatsache, dass Excel weithin als das Standardwerkzeug für eine Datenbank betrachtet wird, bin ich nicht sicher, ob die Daten in Tabellen gespeichert sind, außer es ist eine einzelne Tabelle und es gibt eine Begrenzung für die Anzahl der Zeilen .

Ich glaube nicht, dass es genug Unterscheidung gibt, um etwas anderes zu sagen als "Es sind die Daten, die die Struktur bestimmen, nicht die Quelle."