Hackerboard WikiHaboBlog

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

mysql tabellen layout überarbeiten

Diskussion: mysql tabellen layout überarbeiten im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; heyho ich hab nen kleines problem für mein projekt. und zwar direkt los: ich hab eine tabelle "pc" Code: CREATE ...

Antwort
Alt 18.12.09, 13:55   #1 (permalink)
Member of Honour
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 60
Standard mysql tabellen layout überarbeiten


heyho

ich hab nen kleines problem für mein projekt. und zwar direkt los:

ich hab eine tabelle "pc"

Code:
CREATE TABLE `pc` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `user_id` int(10) unsigned NOT NULL,
  `pc_type` tinyint(2) NOT NULL default '1',
  `name` varchar(50) NOT NULL default 'defaultpc',
  `os` varchar(100) default NULL,
  `cpu` tinytext,
  `ram` tinytext,
  `motherboard` tinytext,
  `hdd` tinytext,
  `graka` tinytext,
  `sound` tinytext,
  `extra` text,
  `row1` varchar(500) default NULL,
  `row2` varchar(500) default NULL,
  `row3` varchar(500) default NULL,
  `row4` varchar(500) default NULL,
  `row5` varchar(500) default NULL,
  `lastupdate` int(10) unsigned NOT NULL default '0',
  `client` varchar(100) NOT NULL default '0',
  `lastprofilupdate` int(10) unsigned NOT NULL default '0',
  `images` text,
  `updatecount` int(10) unsigned NOT NULL default '0',
  `leagacy_image` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=905 ;
wichtig hier sind die spalten row1 bis 5 wo infos über den rechner drin stehen die von clients ~ aller einer minute aktualisiert werden.

jetzt problem nummer zwei, ich brauch die daten um die in bilder auszugeben. dabei gibt es bilder die verschiedene einzelne zeilen von verschiedenen pcs ausgeben. zb von pc id 500 die zeile 3 und von pc 100 die zeile 1. und von den kombinationen 5 stück.
da das ursprünglich nicht vorgesehen hatte, hab ich da einfach bissl unsauber losprogrammiert und das funktioniert zwar, ist allerdings bissl reudig um weiterhin damit zu arbeiten

das problem, die bildertabelle sieht so aus

Code:
CREATE TABLE `images` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `user_id` int(10) unsigned NOT NULL,
  `name` tinytext NOT NULL,
  `row1` tinytext NOT NULL,
  `row2` tinytext NOT NULL,
  `row3` tinytext NOT NULL,
  `row4` tinytext NOT NULL,
  `row5` tinytext NOT NULL,
  `image` int(10) unsigned NOT NULL,
  `created` int(10) unsigned NOT NULL,
  `counter` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
in die row1 -5 stehen die infos drin, wie die zeilen in den bildern aussehen und auf welche daten sie zugreifen.

bsp:

Code:
1:2|255:255:255|16:21|10:1
901:1|255:255:255|16:33|10:1
dabei ist das recht simpel aufgebaut...

<pcid>:<rowid>|<farbcode>|<position>|<fontinfo>

soweit so gut, wie kann man das verbessern.
ganz klar, ne tabelle für die pc infos anlegen die in etwa folgenden aufbau hat.

zeilennummer,computer_id,info

und davon für jeden pc für einträge, damit könnte ich die dann mit den bildern direkt über joins abrufen und das sollte alles kein problem darstellen
genauso das selbe für die bildertabelle, das man dort eine neue tabelle anlegt um die informationen einfach zu verknüpfen.

sprich image_id,computer_id_zeilen_id

das wären dann aber zwei tabellen die immer 5mal so schnell wachsen wie die pc anzahl. ich seh da irgendwie nen arges performance problem irgendwann. und die derzeitige lösung ist irgendwie unsauber.

beides blöd, was sagt ihr?
habt ihr bessere vorschläge?
habt ihr mein kauderwelch verstanden?! ;D
brauch ich mir bei dem plan keine gedanken um die performance machen?
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
Alt 18.12.09, 20:27   #2 (permalink)
 
Registriert seit: 17.01.06
Oi!Alex Leistung: 8086
Likes: 7
Standard

Zugegeben ich habe das Problem (etc.) nicht ganz verstanden. Wenn ich es richtig verstehe möchtest du die Datenbank sauber machen damit du keine Redundanzen hast? Dann bring die DB doch in die 3. Normalform ( http://de.wikipedia.org/wiki/Normali...form_.283NF.29 ). Wenn du dabei Hilfe benötigst sag einfach bescheid.
Oi!Alex ist offline   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 18.12.09, 20:38   #3 (permalink)
Member of Honour
Themenstarter
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 60
Standard

nene, redundanzen sind nicht gegeben, das problem ist, dass ich die daten aus der images tabelle erst parsen muss um dann auf die eigentlich zeilendaten der pcs zuzugreifen.

ich könnte das problem auflösen, indem ich die informationen in extra tabellen packe.
das problem das ich dort dann riesen joins über 5 tabellen jagen muss die halt extrem viele einträge beinhalten. und da hab ich einfach bedenken aus performance sicht.

ich spaare mir sozusagen mit der dirty lösung wie sie jetzt grad eben besteht volle zwei tabellen mit über 10k einträgen die ich sonst mit joins bearbeiten müsste.
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » SQL mysql tabellen layout überarbeiten
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



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