Einzelnen Beitrag anzeigen
Alt 18.12.09, 13:55   #1 (permalink)
easteregg
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: 62
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
 

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