Re: Datenbank Datenfedtyp Multible

2010-11-18 Diskussionsfäden Konrad Rosenbaum
On Tuesday 16 November 2010, lag...@gmx.de wrote:
> Am 16.11.10 20:52, schrieb ottmar-schm...@web.de:
> Es gibt eine Apfelsorten-Tabelle und eine
> Schädigungs-Tabelle.
> 
> Apfelsorten und Schädigungen können durch eine
> dritte Tabelle verknüpft werden:
> 
> lfdNr Apfelsorte Schaden
> ---
> 1 A  Schorf
> 2 A  Milbe
> 3 B  Schorf
> 4 D  Apfelwickler
> 5 D  Feuerbrand
> 
> 
> wobei in Wahrheit statt "A" und "Schorf" die
> jeweilige ID der Sorte und der Schädigung in
> der Tabelle steht. Alle anderen Eigenschaften
> des Apfels und der Schädigung stehen in den
> jeweiligen Tabellen.
> 
> Die Eintragungen in der Zuordnungstabelle müssen
> in keiner Weise geordnet sein. Du kannst
> nach dem jeweils aktuellen Stand der Forschung
> den einzelnen Apfelsorten immer weitere Schädigungen
> zuordnen.

...deswegen bekommt diese Tabelle auch keine lfdNr Spalte.

In Natura sollte das etwa so aussehen:
SortenId SchadenId

11
13
41
23
52
...etc.

Angelegt wird das etwa so:
CREATE TABLE ApfelSchaden (
  SortenId INT NOT NULL REFERENCES Apfelsorten(SortenId), 
  SchadenId INT NOT NULL REFERENCES Schaden(SchadenId),
  PRIMARY KEY (SortenId,SchadenId)
);

Je nach Datenbank muss man INT durch einen anderen Typ ersetzen (z.B. 
DECIMAL) und noch ein wenig Krempel für korrekte Transaktionen und 
Referenzen hinzufügen (MySQL kann das nicht auf MyISAM - es ist halt 
kaputt). Auch die Referenzen sollten natürlich auf die korrekte 
Tabelle/Spalte zeigen...

Zum Thema Abfrage haben die Manuals der jeweiligen Datenbanken ganze Kapitel 
(Stichwort "JOIN"). Hinweis: es ist nicht schlimm wenn die WHERE Klausel 
eines SELECT über mehrere Zeilen geht... ;-)



Konrad


signature.asc
Description: This is a digitally signed message part.
___
Lug-dd maillist  -  Lug-dd@mailman.schlittermann.de
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Re: Datenbank Datenfedtyp Multible

2010-11-16 Diskussionsfäden lag...@gmx.de
Am 16.11.10 20:52, schrieb ottmar-schm...@web.de:
> Hallo Jan,
>
> generell hätte ich mir eingebildet das einigermaßen verstanden zu haben, aber 
> vielleicht auch nicht ganz.
>
> ich habe z.B. eine Haupt-Tabelle "Apfelsorten" und eine Eigenschaften-Tabelle 
>  apfelkrankheiten
>
> In "Apfelkrankheiten" liegt mein Datensatz in der Eigenschaften-Tabelle, 
> "apgelkrankheiten" gibts 2  Felder , die Laufnummer und der Krankheitsnamen"
>
> 1 schorf
> 2 mehltau
> 3 Spinnmilbe
> 4 apfelsägewespe
> 5 Apfelwickler
> 6 Feuerbrannt
> 7 Kragenfäule
>
>
> usw. da sind so 15-20 Einräge drin
>
> wäre jede Sorte nur für einen Schädling anfällig wäre das Verknüpfen des 
> Eigenschaftsfelds Krankheiten einfach.
>
> Nicht jede Apfelsorte ist für jeden Schädling anfällig und nicht jede 
> Apfelsorte hat gleich viele Schädlingsanfälligkeiten.
Anders: Jede Apfelsorte kann für keine, eine
oder mehrere Schädigungen anfällig sein.
Jede Schädigung kann bei einer oder mehreren
Apfelsorten auftreten.

Es gibt eine Apfelsorten-Tabelle und eine
Schädigungs-Tabelle.

Apfelsorten und Schädigungen können durch eine
dritte Tabelle verknüpft werden:

lfdNr Apfelsorte Schaden
---
1 A  Schorf
2 A  Milbe
3 B  Schorf
4 D  Apfelwickler
5 D  Feuerbrand
:

wobei in Wahrheit statt "A" und "Schorf" die
jeweilige ID der Sorte und der Schädigung in
der Tabelle steht. Alle anderen Eigenschaften
des Apfels und der Schädigung stehen in den
jeweiligen Tabellen.

Die Eintragungen in der Zuordnungstabelle müssen
in keiner Weise geordnet sein. Du kannst
nach dem jeweils aktuellen Stand der Forschung
den einzelnen Apfelsorten immer weitere Schädigungen
zuordnen.

Wenn Du am Ende wissen willst, welche Schädigung
bei welcher Apfelsorte auftreten kann, dann fragst
Du die drei Tabellen ab. Und genauso machst Du es,
wenn Du wissen willst, welcher Apfel durch welche
Schädigungen betroffen ist.

Stefan

.


___
Lug-dd maillist  -  Lug-dd@mailman.schlittermann.de
https://ssl.schlittermann.de/mailman/listinfo/lug-dd


Re: Datenbank Datenfedtyp Multible

2010-11-16 Diskussionsfäden Ottmar-Schmidt
Hallo Jan,

generell hätte ich mir eingebildet das einigermaßen verstanden zu haben, aber 
vielleicht auch nicht ganz. 

ich habe z.B. eine Haupt-Tabelle "Apfelsorten" und eine Eigenschaften-Tabelle  
apfelkrankheiten

In "Apfelkrankheiten" liegt mein Datensatz in der Eigenschaften-Tabelle, 
"apgelkrankheiten" gibts 2  Felder , die Laufnummer und der Krankheitsnamen"

1 schorf 
2 mehltau
3 Spinnmilbe
4 apfelsägewespe
5 Apfelwickler
6 Feuerbrannt 
7 Kragenfäule


usw. da sind so 15-20 Einräge drin

wäre jede Sorte nur für einen Schädling anfällig wäre das Verknüpfen des 
Eigenschaftsfelds Krankheiten einfach. 

Nicht jede Apfelsorte ist für jeden Schädling anfällig und nicht jede 
Apfelsorte hat gleich viele Schädlingsanfälligkeiten.

Ich muss im Datensatz der Haupttabelle Apfelsorten
theoretisch ein Feld deffinieren in dem ich die ID´s aus der Krankheitentabelle 
hinterlegen/verknüpfen kann. also 1:n

Beispiel bei eine Apfelsorte  Apfel ist für 1,3,5,7 die Nächste 2,4,6 die 
Nächste 3,4, die Nöächste gar nix und dann komt eine in der nur die 7 
eingetragen ist usw.

Daß ich da 2 Tabelen verknüpfen mussdessen bin ich mir bewust nur das wie ist 
mir in dem Fall, in dem ich nicht imer gleich viele aber generell mehrere Werte 
brauche, das weiss ich nicht wie ichs machen soll.

Da fehlt mir jetzt auch Wissen, ich mach normal nicht viel mit Datenbanken.

VG

Ottmar



-Ursprüngliche Nachricht-
Von: "Jan Leonhardt" 
Gesendet: 16.11.2010 17:19:24
An: lug-dd@mailman.schlittermann.de
Betreff: Re: Datenbank Datenfedtyp Multible

>-BEGIN PGP SIGNED MESSAGE-
>Hash: SHA1
>
>Hallo Ottmar,
>
>deine Ausführung klingt für mich, als ob Du die "Normalisierung" von
>relationalen Datenbanken noch nicht verstanden hast.
>
>Ziel sollte es nicht sein an jedem Datensatz N verschiedene Attribute zu
>pflegen. Viel Sinnvoller wäre es doch die möglichen Attribute mit den
>möglichen Datensätzen zu verbinden.
>
>zb. kann das so aussehen:
>
>
>Tabelle Sorten:
>ID 1
>Name   Gelber Köstlicher
>[weitere eineindeutige Attribute]
>
>[[Attribute]]
>Tabelle Farben:
>ID 1
>Farbe  Rot
>
>ID 2
>Farbe  Grün
>
>ID 3
>Farbe  Gelb
>
>ID 4
>Farbe  Braun
>
>Tabelle Krankheiten:
>ID 1
>Name   WeißderGeier
>
>[[Verknüpfungen]]
>Tabelle Sorte_Farbe:
>ID 1
>Sorte_id   1
>Farbe_id   3
>
>Tabelle Sorte_Krankheit:
>ID 1
>Sorte_id   1
>Krankheit_id   1
>
>
>Suchen kannst du nun über Joins oder über jede einzelne Tabelle.
>
>
>Select
>   *
>FROM Sorten as S,
>left join Sorte_Farbe as S_F on S_F.Sorte_id = S.ID,
>left join Sorte_Krankheit as S_K on S_K.Sorte_id = S.ID
>left join Farben as F on S_F.Farbe_id = F.ID,
>left join Krankheiten as K on S_K.Krankheit_id = K.ID
>
>WHERE
>
>F.Farbe='Grün'
>
>Würde Dir alle grünen Sorten bringen.
>
>
>Man könnte der Einfachheit halber auch über eine Sorte_Option - Tabelle
>nachdenken
>
>Tabelle Sorte_Option:
>ID 1
>Name   'Farbe'
>Value  'Grün'
>
>Dann würde man nur nach dem Value suchen... Ob das Sinnvoll ist, hängt
>stark von deiner Anwendung ab ;)
>
>Am 16.11.2010 15:05, schrieb ottmar-schm...@web.de:
>> Hallo Freunde,
>> nach dem ich einfach auch eine Weile keine Zweit mehr für mein 
>> Datenbankprojekt 
>> "Apfelsorten" hatte, habe ich das Projekt wieder aufgenommen.
>> 
>> Mein Problem ist nach wie vor die Deffinition eines Feldes und der darin 
>> vorhandenen Eigenschaften(Mehrzahl).
>> 
>> Ich sollte in einem Feld mehrere mehrere Inhalte einfügen können. Nicht jede 
>> Datensatz hat gleich viele Einträge. Sollten aber diese Eigenschaften via 
>> SQL 
>> abgefragt werden, sollte jeder Datensatz der die gefragte Eigenschaft mit 
>> hinterlegt wird, auchausgegeben werden.
>> Kann ich das mit Feldtype "multible" machen und wenn ja wie funktioniert 
>> das
>> 
>> Grüße aus dem Weinland Baden
>> 
>> 
>> GRATIS! Movie-FLAT mit über 300 Videos.
>> Jetzt freischalten unter *http://movieflat.web.de*
>> 
>> 
>> 
>> 
>> ___
>> Lug-dd maillist  -  Lug-dd@mailman.schlittermann.de
>> https://ssl.schlittermann.de/mailman/listinfo/lug-dd
>
>- -- 
>Mit freundlichen Grüßen / With kind regards
>
>Jan Leonhardt
>
>IT-Dienstleistungen
>IT-Konsultant
>Administration
>Softwareentwicklung
>-BEGIN PGP SIGNATURE-
>Version: GnuPG v1.4.10 (GNU/Linux)
>Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
>iEYEARECAAYFAkzirwgACgkQKGMAkLB23Lif5ACgi/NEwyd5O7ZNXMn/CJn4gftd
>RvMAoIeOl1ijYK8f5R1yw24rRUFumA7T
>=Tnit
>-END PGP SIGNATURE-
>
___
WEB.DE DSL Doppel-Flat ab 19,99 €/mtl.! Jetzt auch mit 
gratis Notebook-Flat! http://produkte.web.de/go/DSL_Doppel_Flatrate/2

___
Lug-dd maillist  -  Lug-dd@mailman.schlittermann.de
https://ssl.schlittermann.de/mailman/listinfo/lug-dd


Re: Datenbank Datenfedtyp Multible

2010-11-16 Diskussionsfäden Jan Leonhardt
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hallo Ottmar,

deine Ausführung klingt für mich, als ob Du die "Normalisierung" von
relationalen Datenbanken noch nicht verstanden hast.

Ziel sollte es nicht sein an jedem Datensatz N verschiedene Attribute zu
pflegen. Viel Sinnvoller wäre es doch die möglichen Attribute mit den
möglichen Datensätzen zu verbinden.

zb. kann das so aussehen:


Tabelle Sorten:
ID  1
NameGelber Köstlicher
[weitere eineindeutige Attribute]

[[Attribute]]
Tabelle Farben:
ID  1
Farbe   Rot

ID  2
Farbe   Grün

ID  3
Farbe   Gelb

ID  4
Farbe   Braun

Tabelle Krankheiten:
ID  1
NameWeißderGeier

[[Verknüpfungen]]
Tabelle Sorte_Farbe:
ID  1
Sorte_id1
Farbe_id3

Tabelle Sorte_Krankheit:
ID  1
Sorte_id1
Krankheit_id1


Suchen kannst du nun über Joins oder über jede einzelne Tabelle.


Select
*
FROM Sorten as S,
left join Sorte_Farbe as S_F on S_F.Sorte_id = S.ID,
left join Sorte_Krankheit as S_K on S_K.Sorte_id = S.ID
left join Farben as F on S_F.Farbe_id = F.ID,
left join Krankheiten as K on S_K.Krankheit_id = K.ID

WHERE

F.Farbe='Grün'

Würde Dir alle grünen Sorten bringen.


Man könnte der Einfachheit halber auch über eine Sorte_Option - Tabelle
nachdenken

Tabelle Sorte_Option:
ID  1
Name'Farbe'
Value   'Grün'

Dann würde man nur nach dem Value suchen... Ob das Sinnvoll ist, hängt
stark von deiner Anwendung ab ;)

Am 16.11.2010 15:05, schrieb ottmar-schm...@web.de:
> Hallo Freunde,
> nach dem ich einfach auch eine Weile keine Zweit mehr für mein 
> Datenbankprojekt 
> "Apfelsorten" hatte, habe ich das Projekt wieder aufgenommen.
> 
> Mein Problem ist nach wie vor die Deffinition eines Feldes und der darin 
> vorhandenen Eigenschaften(Mehrzahl).
> 
> Ich sollte in einem Feld mehrere mehrere Inhalte einfügen können. Nicht jede 
> Datensatz hat gleich viele Einträge. Sollten aber diese Eigenschaften via SQL 
> abgefragt werden, sollte jeder Datensatz der die gefragte Eigenschaft mit 
> hinterlegt wird, auchausgegeben werden.
> Kann ich das mit Feldtype "multible" machen und wenn ja wie funktioniert 
> das
> 
> Grüße aus dem Weinland Baden
> 
> 
> GRATIS! Movie-FLAT mit über 300 Videos.
> Jetzt freischalten unter *http://movieflat.web.de*
> 
> 
> 
> 
> ___
> Lug-dd maillist  -  Lug-dd@mailman.schlittermann.de
> https://ssl.schlittermann.de/mailman/listinfo/lug-dd

- -- 
Mit freundlichen Grüßen / With kind regards

Jan Leonhardt

IT-Dienstleistungen
IT-Konsultant
Administration
Softwareentwicklung
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkzirwgACgkQKGMAkLB23Lif5ACgi/NEwyd5O7ZNXMn/CJn4gftd
RvMAoIeOl1ijYK8f5R1yw24rRUFumA7T
=Tnit
-END PGP SIGNATURE-



smime.p7s
Description: S/MIME Cryptographic Signature
___
Lug-dd maillist  -  Lug-dd@mailman.schlittermann.de
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Re: Datenbank Datenfedtyp Multible

2010-11-16 Diskussionsfäden morphium
Hallo!

Am 16. November 2010 15:05 schrieb :
>
>  Hallo Freunde,
> nach dem ich einfach auch eine Weile keine Zweit mehr für mein 
> Datenbankprojekt "Apfelsorten" hatte, habe ich das Projekt wieder aufgenommen.
>
> Mein Problem ist nach wie vor die Deffinition eines Feldes und der darin 
> vorhandenen Eigenschaften(Mehrzahl).
>
> Ich sollte in einem Feld mehrere mehrere Inhalte einfügen können. Nicht jede 
> Datensatz hat gleich viele Einträge. Sollten aber diese Eigenschaften via SQL 
> abgefragt werden, sollte jeder Datensatz der die gefragte Eigenschaft mit 
> hinterlegt wird, auchausgegeben werden.
> Kann ich das mit Feldtype "multible" machen und wenn ja wie funktioniert 
> das

Wie wärs, wenn du dir den alten Thread nochmal durchliest und die
Vorschläge, die dort gekommen sind, umsetzt?

Grüße,
morphium

___
Lug-dd maillist  -  Lug-dd@mailman.schlittermann.de
https://ssl.schlittermann.de/mailman/listinfo/lug-dd