Oracle 9.2, Tabelle mit ca. 1000 Spalten

Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 19.10.2005 16:37:27 von Dieter Hummel

Hallo NG,

müsste zu einem Datensatz ca. 1000 Werte abspeichern.
(Datensätze werden ständig angelegt und gelöscht)

Ich kann doch nicht eine Tabelle anlegen mit 1000 Spalten.
(wahrscheinlich anlegen schon)

Oder wie wird das elegant gelöst ?

Sollte ich das über mehrere Tabellen verteilen ?


Gruß
Dieter

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 19.10.2005 16:55:36 von Niels Braczek

Dieter Hummel schrieb:

> müsste zu einem Datensatz ca. 1000 Werte abspeichern.
> (Datensätze werden ständig angelegt und gelöscht)
>
> Ich kann doch nicht eine Tabelle anlegen mit 1000 Spalten.
> (wahrscheinlich anlegen schon)
>
> Oder wie wird das elegant gelöst ?
>
> Sollte ich das über mehrere Tabellen verteilen ?

Lies mal etwas über Normalisierung, zB. http://www.itse-guide.de/artikel/25

Sollte mich wundern, wenn du anschließend immer noch 1000 Spalten brauchst.

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------- -----´

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 09:11:21 von Dieter Hummel

Niels Braczek schrieb:
> Dieter Hummel schrieb:
>
>
>>müsste zu einem Datensatz ca. 1000 Werte abspeichern.
>>(Datensätze werden ständig angelegt und gelöscht)
>>
>>Ich kann doch nicht eine Tabelle anlegen mit 1000 Spalten.
>>(wahrscheinlich anlegen schon)
>>
>>Oder wie wird das elegant gelöst ?
>>
>>Sollte ich das über mehrere Tabellen verteilen ?
>
>
> Lies mal etwas über Normalisierung, zB. http://www.itse-guide.de/artikel/25
>
> Sollte mich wundern, wenn du anschließend immer noch 1000 Spalten brauchst.

Das mit den Kategorien ist mir klar.

Aber was ist wenn ich zu der Pizza 1000 Zutaten brauche.
(oder verstehe ich es immer noch nicht ;-))

In Wirklichkeit muss ich zu einer Position ca. 1000 Masse abspeichern

>
> MfG
> Niels
>

Gruß
Dieter

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 09:16:04 von Rauch Christian

Dieter Hummel schrieb:
> Niels Braczek schrieb:
>
> Das mit den Kategorien ist mir klar.
>
> Aber was ist wenn ich zu der Pizza 1000 Zutaten brauche.
> (oder verstehe ich es immer noch nicht ;-))
>

Wenn du zu einer Pizza 1000 Zutaten brauchst, machst du es ungefähr so:

Du brauchst 3 Tabellen
Tabelle pizza:
pizza_id|pizza_name

Tabelle zutaten
zutat_id|zutat_name

Tabelle zutaten_pizza
zutat_id|pizza_id

Dadurch kannst du die Zuordnung allein durch IDs herstellen und brauchst
keine Zutat 2-mal in die Datenbank schreiben

> Gruß
> Dieter

mfg,
rauch

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 09:41:24 von Dieter Hummel

Rauch Christian schrieb:
> Dieter Hummel schrieb:
>
>> Niels Braczek schrieb:
>
> >
>
>> Das mit den Kategorien ist mir klar.
>>
>> Aber was ist wenn ich zu der Pizza 1000 Zutaten brauche.
>> (oder verstehe ich es immer noch nicht ;-))
>>
>
> Wenn du zu einer Pizza 1000 Zutaten brauchst, machst du es ungefähr so:
>
> Du brauchst 3 Tabellen
> Tabelle pizza:
> pizza_id|pizza_name
>
> Tabelle zutaten
> zutat_id|zutat_name
>
> Tabelle zutaten_pizza
> zutat_id|pizza_id
>
> Dadurch kannst du die Zuordnung allein durch IDs herstellen und brauchst
> keine Zutat 2-mal in die Datenbank schreiben

Ja, das mit der Pizza war etwas unglücklich.

Ich habe keine festen Zutaten sondern Masse die immer unterschiedlich
sind. Ich müsste dann 1000 Tabellen anlegen (Tabelle MASS1, MASS2, ....)

>
> mfg,
> rauch

Gruß
Dieter

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 09:50:08 von Rauch Christian

Dieter Hummel schrieb:
> Rauch Christian schrieb:
>
>> Dieter Hummel schrieb:
>>
>>> Niels Braczek schrieb:
>>
>>
>> >
>>
>>> Das mit den Kategorien ist mir klar.
>>>
>>> Aber was ist wenn ich zu der Pizza 1000 Zutaten brauche.
>>> (oder verstehe ich es immer noch nicht ;-))
>>>
>>
>> Wenn du zu einer Pizza 1000 Zutaten brauchst, machst du es ungefähr so:
>>
>> Du brauchst 3 Tabellen
>> Tabelle pizza:
>> pizza_id|pizza_name
>>
>> Tabelle zutaten
>> zutat_id|zutat_name
>>
>> Tabelle zutaten_pizza
>> zutat_id|pizza_id
>>
>> Dadurch kannst du die Zuordnung allein durch IDs herstellen und brauchst
>> keine Zutat 2-mal in die Datenbank schreiben
>
>
> Ja, das mit der Pizza war etwas unglücklich.
>
> Ich habe keine festen Zutaten sondern Masse die immer unterschiedlich
> sind. Ich müsste dann 1000 Tabellen anlegen (Tabelle MASS1, MASS2, ....)
>
>>
>> mfg,
>> rauch
>
>
> Gruß
> Dieter
Nö, musst du auch nicht.
Sofern du immer wieder gleiche Zutaten hast, nur verschiedene Mengen,
füge zur Tabelle zutaten_pizza eine Spalte 'menge' hinzu.

In der Hoffnung, dein Problem richtig verstanden zu haben ;)

mfg,
rauch

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 10:22:32 von Dieter Hummel

Rauch Christian schrieb:
> Dieter Hummel schrieb:
>
>> Rauch Christian schrieb:
>>
>>> Dieter Hummel schrieb:
>>>
>>>> Niels Braczek schrieb:
>>>
>>>
>>>
>>> >
>>>
>>>> Das mit den Kategorien ist mir klar.
>>>>
>>>> Aber was ist wenn ich zu der Pizza 1000 Zutaten brauche.
>>>> (oder verstehe ich es immer noch nicht ;-))
>>>>
>>>
>>> Wenn du zu einer Pizza 1000 Zutaten brauchst, machst du es ungefähr so:
>>>
>>> Du brauchst 3 Tabellen
>>> Tabelle pizza:
>>> pizza_id|pizza_name
>>>
>>> Tabelle zutaten
>>> zutat_id|zutat_name
>>>
>>> Tabelle zutaten_pizza
>>> zutat_id|pizza_id
>>>
>>> Dadurch kannst du die Zuordnung allein durch IDs herstellen und brauchst
>>> keine Zutat 2-mal in die Datenbank schreiben
>>
>>
>>
>> Ja, das mit der Pizza war etwas unglücklich.
>>
>> Ich habe keine festen Zutaten sondern Masse die immer unterschiedlich
>> sind. Ich müsste dann 1000 Tabellen anlegen (Tabelle MASS1, MASS2, ....)
>>
>>>
>>> mfg,
>>> rauch
>>
>>
>>
>> Gruß
>> Dieter
>
> Nö, musst du auch nicht.
> Sofern du immer wieder gleiche Zutaten hast, nur verschiedene Mengen,
> füge zur Tabelle zutaten_pizza eine Spalte 'menge' hinzu.
>
> In der Hoffnung, dein Problem richtig verstanden zu haben ;)

Problem ist wahrscheinlich dass ich in einem Jahr ca. 1,8 Mio Datensätze
habe. Und wenn ich die Masse zu der Position brauche, muss ich die 1000
Datensätze auslesen. Vorteil wäre dass der Datensatz nur angelegt wird
wenn der Wert <> 0 (Kommt natürlich auch vor).

Werd mir das ganze noch einmal überdenken.

>
> mfg,
> rauch

Danke und Gruss
Dieter

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 11:05:07 von Fabian Schladitz

Dieter Hummel schrieb:
> Rauch Christian schrieb:
>=20
>> Nö, musst du auch nicht.
>> Sofern du immer wieder gleiche Zutaten hast, nur verschiedene Mengen,
>> füge zur Tabelle zutaten_pizza eine Spalte 'menge' hinzu.
>>
>=20
> Problem ist wahrscheinlich dass ich in einem Jahr ca. 1,8 Mio Datens=C3=
=A4tze=20
> habe. Und wenn ich die Masse zu der Position brauche, muss ich die 1000=
=20
> Datensätze auslesen. Vorteil wäre dass der Datensatz nur ange=
legt wird=20
> wenn der Wert <> 0 (Kommt natürlich auch vor).
>=20
> Werd mir das ganze noch einmal überdenken.

Kannst du vielleicht ohne Pizza und Zutaten dein Problem beschreiben?=20
Und warum genau machen dir 1,8 Mio Einträge in der Oracel-DB Sorgen?=


Wenn du die Mixtur eines Produktes abspeichern willst, macht der=20
beschriebene Vorschlag schon Sinn. Du vermeidest es, viele Spalten mit 0 =

zu speichern und kannst z.B. alle Produkte finden, die eine bestimmte=20
Zutat benötigen.
Oder den Verbrauch an Zutat X feststellen...

Also mit einer normalisierten Datenbank hast du einfach verdammt gute=20
Chancen etwas Schönes zu machen :)

--=20
HTH,
Fabian

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 11:34:44 von Ingo Hamann

Fabian Schladitz schrieb:
> Dieter Hummel schrieb:
>
>> Rauch Christian schrieb:
>>
>>> Nö, musst du auch nicht.
>>> Sofern du immer wieder gleiche Zutaten hast, nur verschiedene Mengen,
>>> füge zur Tabelle zutaten_pizza eine Spalte 'menge' hinzu.
>>>
>>
>> Problem ist wahrscheinlich dass ich in einem Jahr ca. 1,8 Mio
>> Datensätze habe. Und wenn ich die Masse zu der Position brauche, muss
>> ich die 1000 Datensätze auslesen. Vorteil wäre dass der Datensatz nur
>> angelegt wird wenn der Wert <> 0 (Kommt natürlich auch vor).
>>
>> Werd mir das ganze noch einmal überdenken.
>
>
> Kannst du vielleicht ohne Pizza und Zutaten dein Problem beschreiben?
> Und warum genau machen dir 1,8 Mio Einträge in der Oracel-DB Sorgen?
>
> Wenn du die Mixtur eines Produktes abspeichern willst, macht der
> beschriebene Vorschlag schon Sinn. Du vermeidest es, viele Spalten mit 0
> zu speichern und kannst z.B. alle Produkte finden, die eine bestimmte
> Zutat benötigen.
> Oder den Verbrauch an Zutat X feststellen...
>
> Also mit einer normalisierten Datenbank hast du einfach verdammt gute
> Chancen etwas Schönes zu machen :)
>

Viele Objekte mit jeweils vielen verschiedenen (uneinheitlichen) Massen
= eine Tabelle:

ObjektID
MassBezeichnung
MassEinheit
MassZahl

Fertig.
Gruß Ingo

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 11:51:41 von Dieter Hummel

Fabian Schladitz schrieb:
> Dieter Hummel schrieb:
>
>> Rauch Christian schrieb:
>>
>>> Nö, musst du auch nicht.
>>> Sofern du immer wieder gleiche Zutaten hast, nur verschiedene Mengen,
>>> füge zur Tabelle zutaten_pizza eine Spalte 'menge' hinzu.
>>>
>>
>> Problem ist wahrscheinlich dass ich in einem Jahr ca. 1,8 Mio
>> Datensätze habe. Und wenn ich die Masse zu der Position brauche, muss
>> ich die 1000 Datensätze auslesen. Vorteil wäre dass der Datensatz nur
>> angelegt wird wenn der Wert <> 0 (Kommt natürlich auch vor).
>>
>> Werd mir das ganze noch einmal überdenken.
>
>
> Kannst du vielleicht ohne Pizza und Zutaten dein Problem beschreiben?

Habe beliebige Artikel in eine Tabelle, von denen ich einen auswähle, in
einer anderen Tabelle (lfdPos,ArtikelNr,Mass1,...) speichere und zu dem
dann bis zu 1000 Masse abgespeichert werden müssen. Der Spaltenname der
1000 Masse ist bei allen Artikeln gleich.

z. B.
lfdPos,ArtikelNr,Mass1,Mass2,Mass3,..........,Mass1000

> Und warum genau machen dir 1,8 Mio Einträge in der Oracel-DB Sorgen?

Nicht wirklich, nur Zwecks der Übersicht.

>
> Wenn du die Mixtur eines Produktes abspeichern willst, macht der
> beschriebene Vorschlag schon Sinn. Du vermeidest es, viele Spalten mit 0
> zu speichern und kannst z.B. alle Produkte finden, die eine bestimmte
> Zutat benötigen.
> Oder den Verbrauch an Zutat X feststellen...

Wenn Tabellen-Aufbau so ist:
1,Mass1,1234
1,Mass2,5678
1,Mass3,3
2,Mass1,9875
2,Mass3,98
...

Wenn ich dann alle Masse zu einem Positions-Artikel brauche, müsste ich
ja theoretisch 1000x select machen dass ich die Werte kenne, oder ?


Muss dazu noch sagen dass ich ein Tool habe, mit dem ich mit einem
select auf einen Datensatz alle Spaltenwerte kenne.
Deshalb wäre es für mich einfacher wenn ich eine Tabelle mit 1000
Spalten hätte. Aber mich schüttelt´s wenn ich an 1000 Spalten denke
(geht das überhaupt bei Oracle ? )


Gruß
Dieter

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 11:54:14 von Rauch Christian

Ingo Hamann schrieb:
> Fabian Schladitz schrieb:
>
>> Dieter Hummel schrieb:
>>
>> Also mit einer normalisierten Datenbank hast du einfach verdammt gute
>> Chancen etwas Schönes zu machen :)
>>
>
> Viele Objekte mit jeweils vielen verschiedenen (uneinheitlichen) Massen
> = eine Tabelle:
>
> ObjektID
> MassBezeichnung
> MassEinheit
> MassZahl
>
> Fertig.
> Gruß Ingo

ist doch auch nicht so schwer.
Ein Objekt kann immer nur eine Einheit haben.

Also folgendes Tabellendesign (wieder mit dem Pizza-Beispiel;))

Du brauchst 3 Tabellen
Tabelle pizza:
pizza_id|pizza_name

Tabelle zutaten
zutat_id|zutat_name|zutat_einheit

Tabelle zutaten_pizza
zutat_id|pizza_id|zutat_menge

und schon hast du wieder deine Zuordung korrekt mit Einheit und Menge.

hth,
rauch

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 12:02:55 von Rauch Christian

Dieter Hummel schrieb:
>
> Wenn ich dann alle Masse zu einem Positions-Artikel brauche, müsste ich
> ja theoretisch 1000x select machen dass ich die Werte kenne, oder ?
>
Nö, nur einen, der halt dann mehrere Zeilen zurückgibt

Ich bin jetzt eher auf MySQL, aber ich denke mal in Oracle müsste das
das gleiche sein ;)

SELECT
pizza.pizza_id,pizza.pizza_name,zutaten.zutat_id,zutaten.zut at_name,zutaten.zutat_einheit
,zutaten_pizza.zutat_menge FROM pizza,zutaten,zutaten_pizza WHERE
pizza.pizza_id = zutaten_pizza.pizza_id AND zutaten.zutat_id =
zutaten_pizza.zutat_id;

Ist jetzt natülich ungetestet, aber du müsstest dann x Zeilen
zurückbekommen mit folgenden Werten:
pizza_id|pizza_name|zutat_id|zutat_name|zutat_einheit|zutat_ menge

Alternativ, wenn dir die ID bekannt ist (durch einen vorherigen Select /
Übergabe in deinem Programm (ich denke mal, das du das nicht nur
datenbankseitig lösen willst, sondern auch ne Oberfläche dazu ;)),
kannst du pizza_id und pizza_name weglassen und die einzeln abfragen.

Dadurch verschwindet der Overhead von pizza_id und pizza_name in jeder
zurückgegeben Zeile.

(Tabellen- und Spaltennamen aus meinem anderen Post vor 10 Minuten)
>
>
> Gruß
> Dieter
>

mfg,
rauch

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 12:39:25 von Christian Schmelzer

Dieter Hummel wrote:
> Hallo NG,
>
> müsste zu einem Datensatz ca. 1000 Werte abspeichern.
> (Datensätze werden ständig angelegt und gelöscht)
>
> Ich kann doch nicht eine Tabelle anlegen mit 1000 Spalten.
> (wahrscheinlich anlegen schon)
>
> Oder wie wird das elegant gelöst ?
>
> Sollte ich das über mehrere Tabellen verteilen ?
>
>
> Gruß
> Dieter

Hallo,
nur mal so ne Frage. Scheinbar hast du keine Ahnung von Datenbanken. Warum
fängst du mit einem Schlachtschiff wie Oracle an? Hast du Lizenzkosten /
Nutzen Rechnung mal durchgespielt? Oder brauchst du keine Lizenz?

Christian

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 20.10.2005 13:45:24 von Dieter Hummel

Christian Schmelzer schrieb:
> Dieter Hummel wrote:
>
>>Hallo NG,
>>
>>müsste zu einem Datensatz ca. 1000 Werte abspeichern.
>>(Datensätze werden ständig angelegt und gelöscht)
>>
>>Ich kann doch nicht eine Tabelle anlegen mit 1000 Spalten.
>>(wahrscheinlich anlegen schon)
>>
>>Oder wie wird das elegant gelöst ?
>>
>>Sollte ich das über mehrere Tabellen verteilen ?
>>
>>
>>Gruß
>>Dieter
>
>
> Hallo,
> nur mal so ne Frage. Scheinbar hast du keine Ahnung von Datenbanken. Warum
> fängst du mit einem Schlachtschiff wie Oracle an? Hast du Lizenzkosten /
> Nutzen Rechnung mal durchgespielt? Oder brauchst du keine Lizenz?

Lizenzkosten / Nutzen Rechnung brauche ich nicht. Habe genügend Lizenzen


>
> Christian
>
>

Gruß
Dieter

Re: Oracle 9.2, Tabelle mit ca. 1000 Spalten

am 23.10.2005 21:58:55 von Brit Schiergl

Hallo,

hier hast du mal ne Kurzfassung von einer Rezeptdb:
Tab. Rezepte:
REZEPT_ID
Name
Zubereitungszeit
Zubereitung
usw.

Tab. Zutaten:
ZUTAT_ID
Bezeichnung
Einheit (für wieviele Einheiten..) (pro 100)
Mass (und welche Maßeinheit..) (g)
Kalorien (hat die Zutat Kalorien..) (750 kal)
Fett (Fett,..) (83 g)
Zucker (Zucker,..) (1g)
usw.
Bsp. Butter - pro 100 - g - hat 750 kal - 83 g Fett, 1 g Zucker

Tab. Rezept-Zutat:
REZEPT_ID (Pizza Margarita)
ZUTAT_ID (Butter)
Einheiten (200)
Bemerkung (bla bla)
Bsp. Für die Pizza Margarita braucht man 200 Einheiten Butter. Die
Maßeinheit steht in der Zutaten-Tabelle (also g). Dort kann man jetzt
nachsehen, wieviel Einheiten wieviel Kalorien, Fett, Zucker usw. hat. Bsp.:
200 g Butter = 200/100 (g) * 83 g Fett = 166 g Fett

Brit

"Rauch Christian" schrieb im Newsbeitrag
news:dj7g5s$mk7$01$1@news.t-online.com...
> Dieter Hummel schrieb:
>> Niels Braczek schrieb:
> >
>> Das mit den Kategorien ist mir klar.
>>
>> Aber was ist wenn ich zu der Pizza 1000 Zutaten brauche.
>> (oder verstehe ich es immer noch nicht ;-))
>>
>
> Wenn du zu einer Pizza 1000 Zutaten brauchst, machst du es ungefähr so:
>
> Du brauchst 3 Tabellen
> Tabelle pizza:
> pizza_id|pizza_name
>
> Tabelle zutaten
> zutat_id|zutat_name
>
> Tabelle zutaten_pizza
> zutat_id|pizza_id
>
> Dadurch kannst du die Zuordnung allein durch IDs herstellen und brauchst
> keine Zutat 2-mal in die Datenbank schreiben
>
>> Gruß
>> Dieter
>
> mfg,
> rauch