[ mrki @ 18.03.2004. 08:07 ] @
imam neku malu bazu za jednostavan forum:
Code:

CREATE TABLE forum_post (
  post_id int(10) default NULL auto_increment,
  topic_id int(10) NOT NULL default '0',
  poster varchar(50) NOT NULL default ' ',
  post_time varchar(20) default NULL,
  email varchar(75) NOT NULL default ' ',
  web varchar(75) NOT NULL default ' ',
  PRIMARY KEY (post_id),
  KEY post_id(post_id),
  KEY topic_id(topic_id),
  KEY poster_id(poster)
) ENGINE=MyISAM;


CREATE TABLE forum_postext (
  post_id int(10) NOT NULL default '0',
  post_text text,
  PRIMARY KEY (post_id)
) ENGINE=MyISAM;


CREATE TABLE forum_topic (
  topic_id int(10) default NULL auto_increment,
  topic_title varchar(100) default NULL,
  topic_poster varchar(50) NOT NULL default ' ',
  topic_time varchar(20) default NULL,
  topic_views int(10) NOT NULL default '0',
  topic_replies int(10) NOT NULL default '0',
  topic_last_post_id int(10) NOT NULL default '0',
  PRIMARY KEY (topic_id),
  KEY topic_id(topic_id),
  KEY topic_last_post_id(topic_last_post_id)
) ENGINE=MyISAM;

pitanje:
1. nisu mi bas jasne ove veze izmedju tabela, dali neko moze da mi rastumaci
stavke iz prve tabele:
...
KEY post_id(post_id),
KEY topic_id(topic_id),
KEY poster_id(poster)

odnosno iz trece:
...
KEY topic_id(topic_id),
KEY topic_last_post_id(topic_last_post_id)


2.zeleo bih da podelim forum na vise tema (pr. plivanje, kosarka, kuvanje...)
znaci trebala bi mi jos jedna tabela pr.:

CREATE TABLE forum_name(
forum_id int(10) default NULL auto_increment,
eventualno_moderator int(10) NOT NULL default '0',
PRIMARY KEY (topic_id)
Interesuje me kako da ovu tabelu povezem sa ostatkom baze?
)ENGINE=MyISAM;

Ako moze neki precizan, akratak :) odgovor cisto da rastumacim stvar...moze
svakako i neki dobar link koji bi bio od pomoci.

[ CandyMan @ 20.03.2004. 10:49 ] @
1. KEY je sinonim za indeks.
KEY ime_indeksa (indeksirano_polje)
Indeksi se koriste radi poboljsanja performansi.

2. Nije mi baš jasno šta si mislio sa ove tri tabele... Pokušaj da objasniš šta hoćeš prostim jezikom.
[ Gojko Vujovic @ 20.03.2004. 11:52 ] @
Ukratko ovako:

- dodaš u forum_topic kolonu board_id
- tabela forum_boards treba da sadrži id polje pored naziva foruma i ostalih podataka

Taj "id" u drugoj ti je u stvari "board_id" u prvoj tabeli i onda kada treba prikazati samo teme iz jednog foruma, selektuješ listu iz forum_topic sa dodatkom na where: ..AND boardid=$broj.

Sad videh da si nešto slično već smislio sa forum_name tabelom. U njoj promeni ono "PRIMARY KEY (topic_id)" sa "PRIMARY KEY (forum_id)" pošto topic_id nemaš u toj tabeli i dodaj jednu kolonu za naziv i jednu za opis foruma, na primer. A povezivanje radiš izmenom kverija u okviru programa koji koristi tu bazu. Daj primer nekog kverija i kakvu si tabelu smislio, pa da ga izmenimo.
[ Dejan Topalovic @ 20.03.2004. 20:24 ] @
mrki:
Ako te zanima čemu služi PRIMARY KEY klauzula pri kreiranju tabele, pogledaj slijedeći link http://www.mysql.com/doc/en/CREATE_TABLE.html
Negdje otprilike na polovini stranice se nalazi objašnjenje o tome.