php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.05.2005, 19:30  
Erfahrener Benutzer
 
Registriert seit: 22.03.2005
Beiträge: 355
faux
faux eine Nachricht über ICQ schicken faux eine Nachricht über AIM schicken faux eine Nachricht über MSN schicken faux eine Nachricht über Yahoo! schicken
Standard Lohnt sich ein Datenbankumdesignen

Hallo!

Ich programmiere jetzt schon seit ca zwei Monaten an einem Onlinegame, wie der eine oder andere sicher mitbekommen hat.
Jedenfalls hab ich das Datenbank Design vorher Tagelang durchdacht, jedoch hat sich ein (schwerwiegender ?) Fehler eingeschlichen.
Hier mal kurz ein Überblick über die betreffenden Tabellen:
Code:
+-----------------------------------------------------------+  +--------------------------------------------------+
| Usertabelle                                               |  | Asteroidentabelle                                |
+------------+-------------+-----+---------+----------------+  +-------+---------+-----+---------+----------------+
| Field      | Type        | Key | Default | Extra          |  | Field | Type    | Key | Default | Extra          |
+------------+-------------+-----+---------+----------------+  +-------+---------+-----+---------+----------------+
| id         | int(11)     | PRI | NULL    | auto_increment |  | id    | int(11) | PRI | NULL    | auto_increment |
| user       | varchar(20) | UNI |         |                |  | owner | int(11) |     | 0       |                |
| pwd        | varchar(32) |     |         |                |  | field | int(11) |     | 0       |                |
| name       | varchar(40) |     |         |                |  | res0  | int(11) |     | 0       |                |
| mail       | varchar(64) | UNI |         |                |  | res1  | int(11) |     | 0       |                |
| logincount | int(11)     |     | 0       |                |  | res2  | int(11) |     | 0       |                |
| code       | varchar(32) |     | NULL    |                |  | res3  | int(11) |     | 0       |                |
| res1       | int(11)     |     | 0       |                |  | res4  | int(11) |     | 0       |                |
| res2       | int(11)     |     | 0       |                |  +-------+---------+-----+---------+----------------++
| res3       | int(11)     |     | 0       |                |  | Flottentabelle                                    |
| res4       | int(11)     |     | 0       |                |  +--------+---------+-----+---------+----------------+
| points     | int(11)     |     | 10      |                |  | Field  | Type    | Key | Default | Extra          |
| update     | int(11)     |     | 0       |                |  +--------+---------+-----+---------+----------------+
| lang       | int(11)     |     | 1       |                |  | id     | int(11) | PRI | NULL    | auto_increment |
| tpl        | int(11)     |     | 1       |                |  | owner  | int(11) |     | NULL    |                |
| style      | int(11)     |     | 1       |                |  | number | int(11) |     | 0       |                |
| admin      | int(11)     |     | 0       |                |  | x      | int(11) |     | 0       |                |
| ext_uni    | int(11)     |     | 0       |                |  | y      | int(11) |     | 0       |                |
| x          | int(11)     |     | 0       |                |  | z      | int(11) |     | 0       |                |
| y          | int(11)     |     | 0       |                |  | typ1   | int(11) |     | 0       |                |
| z          | int(11)     |     | 0       |                |  | typ2   | int(11) |     | 0       |                |
| planet     | int(11)     |     | 0       |                |  | typ3   | int(11) |     | 0       |                |
| locked     | int(11)     |     | 0       |                |  | typ4   | int(11) |     | 0       |                |
| view_a     | int(11)     |     | 0       |                |  | typ5   | int(11) |     | 0       |                |
| view_b     | int(11)     |     | 0       |                |  | typ6   | int(11) |     | 0       |                |
| view_c     | int(11)     |     | 0       |                |  | typ7   | int(11) |     | 0       |                |
| view_d     | int(11)     |     | 0       |                |  | typ8   | int(11) |     | 0       |                |
| typ1       | int(11)     |     | 1       |                |  | typ9   | int(11) |     | 0       |                |
| typ2       | int(11)     |     | 1       |                |  +--------+---------+-----+---------+----------------+----+
| typ3       | int(11)     |     | 1       |                |  | Schiffstabelle (Nur Daten über die Schiffe)            |
| typ4       | int(11)     |     | 1       |                |  +---------+-------------+-----+---------+----------------+
| typ5       | int(11)     |     | 1       |                |  | Field   | Type        | Key | Default | Extra          |
| typ6       | int(11)     |     | 1       |                |  +---------+-------------+-----+---------+----------------+
| typ7       | int(11)     |     | 1       |                |  | id      | int(11)     | PRI | NULL    | auto_increment |
| typ8       | int(11)     |     | 1       |                |  | name    | varchar(25) |     |         |                |
| typ9       | int(11)     |     | 1       |                |  | typ     | int(11)     |     | 0       |                |
| astro0     | int(11)     |     | 0       |                |  | klasse  | int(11)     |     | 0       |                |
| astro1     | int(11)     |     | 0       |                |  | tarnung | int(1)      |     | 0       |                |
| astro2     | int(11)     |     | 0       |                |  | res1    | int(11)     |     | 0       |                |
| astro3     | int(11)     |     | 0       |                |  | res2    | int(11)     |     | 0       |                |
| astro4     | int(11)     |     | 0       |                |  | res3    | int(11)     |     | 0       |                |
+------------+-------------+-----+---------+----------------+  | res4    | int(11)     |     | 0       |                |
                                                               +---------+-------------+-----+---------+----------------+
Habe das ganze platzsparend nebeneinander gepackt, hoffe das ist bei jeder Auflösung lesbar....

Mein Problem:
Jedem fällt es sicherlich gleich auf: In jeder Tabelle gibt es Spalten wie "typ1" bis "typ9" oder "res0" bis "res4" bzw auch "astro0" bis "astro4".
Ich habe jetzt vor, eine Tabelle zu machen, die wie folgt aussieht:
Code:
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) |      | PRI | NULL    | auto_increment |
| entry | int(11) | YES  |     | NULL    |                |
| typ   | int(1)  |      |     | 0       |                |
| value | int(11) |      |     | 0       |                |
+-------+---------+------+-----+---------+----------------+
Und diese tabelle will ich dann statt den typ1 bis typ9's verwenden.
In entry kommt dann die ID rein, für welchen Datensatz das gilt und in typ dann ein Wert von 1 bis 9. In value dann der Wert.
Also eine Klassische 1:n Beziehung.

Zahlt sich das aus? Denn das wäre eine Arbeit von ein bis zwei Tagen....

Fällt wem eine bessere Idee ein?

Danke schon mal.
__________________
Wer weiß dass er nichts weiß, weiß mehr, als der der nicht weiß dass er nichts weiß.
www.e-faux.com
faux ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.05.2005, 19:37  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

^warum lässt dus nicht bei der user tabelle? es ist doch viel handlicher mit einem query alle user daten zu haben und nicht noch ne andere tabelle mit reinzuziehen. außerdem was bringt es dir in der 2ten tabelle? du hast doch eigentlich keine vorteile
Flor1an ist offline   Mit Zitat antworten
Alt 30.05.2005, 19:39  
Erfahrener Benutzer
 
Registriert seit: 22.03.2005
Beiträge: 355
faux
faux eine Nachricht über ICQ schicken faux eine Nachricht über AIM schicken faux eine Nachricht über MSN schicken faux eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von RaZoR
^warum lässt dus nicht bei der user tabelle? es ist doch viel handlicher mit einem query alle user daten zu haben und nicht noch ne andere tabelle mit reinzuziehen. außerdem was bringt es dir in der 2ten tabelle? du hast doch eigentlich keine vorteile
Einfacher ist es schon, aber hast du dir http://phpfriend.de/ftopic39375.html schon mal angesehen? Da hab ich schon das erste Problem.
__________________
Wer weiß dass er nichts weiß, weiß mehr, als der der nicht weiß dass er nichts weiß.
www.e-faux.com
faux ist offline   Mit Zitat antworten
Alt 30.05.2005, 19:42  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

vieleicht noch ein wenig zur erläuterung was die spalten darstellen ?
btw wenn du auf DB-design achtest, sämtliche ID's kannst du als unsigned int nutzen und ich schätze mal bei einem großen teil der spalten würden es kleienre ints, smaal int oder tinyint oder auch vieleicht ein enum tun.

imho würde ich die von dir angestrebten änderungen durchführen, 2 tage sind bei nem projekt das ein paar monate dauert nicht viel, besser jetzt als später :P

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Wann lohnt sich AJAX Mikay Kun Off-Topic Diskussionen 6 23.07.2008 17:55
Abfrage in Funktion auslagern - lohnt sich das? tayke Datenbanken 4 15.11.2007 23:36
PHP-Magazin: Lohnt es sich? snatch-ic Off-Topic Diskussionen 15 14.05.2007 16:00
Ab welcher Projektgröße lohnt sich OOP? Zergling-new PHP-Fortgeschrittene 16 15.11.2005 13:38
Lohnt sich der Kauf ? robo47 Off-Topic Diskussionen 13 02.07.2005 12:17
Lohnt sich Linux? Server, Hosting und Workstations 38 24.12.2004 15:10
novell systems - lohnt sich das für ein privates netzwerk? Off-Topic Diskussionen 3 30.10.2004 21:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php objekte liste entry

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.