| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
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 ...
![]() |
| | #1 (permalink) |
| Member of Honour ![]() | 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 ; 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 ; bsp: Code: 1:2|255:255:255|16:21|10:1 901:1|255:255:255|16:33|10:1 <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 |> |
| | |
| | #2 (permalink) |
![]() Registriert seit: 17.01.06 ![]() Likes: 7 | 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. |
| | |
| HaBOT | |
| |
| | #3 (permalink) |
| Member of Honour ![]() | 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 |> |
| | |
![]() |
| | |
| |
| Themen-Optionen | |
| Ansicht | |
| |