Thread Datenbankdesign: für Onlinegame (5 answers)
Opened by pktm at 2003-10-13 16:17

pktm
 2003-10-15 00:59
#35548 #35548
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
So sieht es jetzt aus:
Code: (dl )
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# --------------------------------------------------------
#
# Table structure for table 'aktionen'
#

CREATE TABLE aktionen (
id int(255) NOT NULL auto_increment,
beschr varchar(255) NOT NULL,
building_id int(255) DEFAULT '0' NOT NULL,
time2do timestamp(14),
sektor varchar(255) NOT NULL,
was varchar(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE id (id)
);

#
# Dumping data for table 'aktionen'
#

INSERT INTO aktionen VALUES ( '1', 'Ausbau', '1', '00000000000000', '1.1', 'ausbau1_2');

# --------------------------------------------------------
#
# Table structure for table 'buildings'
#

CREATE TABLE buildings (
id int(255) NOT NULL auto_increment,
name varchar(255) NOT NULL,
platzbedarf int(255) DEFAULT '0' NOT NULL,
Funktion varchar(255) NOT NULL,
Wert varchar(255) DEFAULT 'undef' NOT NULL,
PRIMARY KEY (id),
UNIQUE id (id)
);

#
# Dumping data for table 'buildings'
#

INSERT INTO buildings VALUES ( '1', 'HQ1', '5', 'Kontrollzentrum', 'undef');
INSERT INTO buildings VALUES ( '2', 'Kas1', '3', 'Einheitenproduktion', '*1%');
INSERT INTO buildings VALUES ( '3', 'Sch1', '3', 'Waffenproduktion', '0_0_0_0');
INSERT INTO buildings VALUES ( '4', 'HQ2', '6', 'Kontrollzentrum & Turm', '+10%');

# --------------------------------------------------------
#
# Table structure for table 'sektor'
#

CREATE TABLE sektor (
id varchar(255) NOT NULL,
typ tinyint(1) DEFAULT '0' NOT NULL,
platz tinyint(2) DEFAULT '0' NOT NULL,
buildings varchar(255) DEFAULT '0' NOT NULL,
einheiten varchar(255) NOT NULL,
UNIQUE id (id)
);

#
# Dumping data for table 'sektor'
#

INSERT INTO sektor VALUES ( '1.1', '0', '15', '1', '50_1');

# --------------------------------------------------------
#
# Table structure for table 'spieler'
#

CREATE TABLE spieler (
id int(255) NOT NULL auto_increment,
sektoren varchar(255) DEFAULT 'sektor' NOT NULL,
name varchar(255) DEFAULT 'name' NOT NULL,
volk tinyint(1) DEFAULT '0' NOT NULL,
aktionen varchar(255) DEFAULT '0' NOT NULL,
login timestamp(14),
Punkte int(255) DEFAULT '0' NOT NULL,
PRIMARY KEY (id),
UNIQUE id (id)
);

#
# Dumping data for table 'spieler'
#

INSERT INTO spieler VALUES ( '1', '1.1', 'pktm', '1', '0', '19700102010000', '0');

# --------------------------------------------------------
#
# Table structure for table 'units'
#

CREATE TABLE units (
id int(255) DEFAULT '0' NOT NULL,
name varchar(255) DEFAULT 'Unit' NOT NULL,
att int(255) DEFAULT '20' NOT NULL,
def int(255) DEFAULT '10' NOT NULL,
def_cav int(255) DEFAULT '5' NOT NULL,
geschw int(255) DEFAULT '7' NOT NULL
);

#
# Dumping data for table 'units'
#

INSERT INTO units VALUES ( '1', 'Standard-Einheit', '20', '10', '5', '7');

Jetzt müsste eigentlich alles wesentliche drinne sein.
Was mri noch nicht so ganz gefällt, ist, dass ich Listen mit Wertepaaren hinterelegen muss. Z.B. bei der Tabelle Aktionen.
Dort kann ich das Gebäude(ID1) ausbauen (zu Gebäude ID 2).
Dazu muss ich "ausbau1_2" schreiben.
Ich kann dann zwar mehrere Aktionen in eine Zeile schreiben, aber irgendwas sagt mir, das das nicht der normalisierten Datenbank entspricht.
Das selbe Problem habe ich beim Feld Einheiten von der Tabelle Sektoren.
Dort kann man natürlich mehrere Einheiten in unterscheidlicher Stückzahl haben, so z.B. die Standardeinheit 50 mal (also 1_20).
Wenn ich aber für jeden EInheitentyp ein Feld anlege ist das auch wieder doof.
Sollte ich dafür vielleicht eine Zwischentabelle anlegen? So aus Spieler_ID, EinheitenID und Menge?
Ist das effizienter?
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Datenbankdesign: für Onlinegame