Konstrukcija MySql baze

poruka: 13
|
čitano: 2.950
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
Konstrukcija MySql baze

Želio bih konstruirati jednu bazu, sa 4 tablice. Zanimam me kako dobro konstruirat bazu.

 

Baza bi ovako nekako izgledala

 

Korisnik:

-id

-nadimak

-password

-id_članaka

 

Komentari:

-id

-id_korisnika

-komentar

-vrijeme

-id_članka

 

Kategorija:

-id

-ime

-opis

-vrijeme

 

Članak:

-id

-naziv

-vrijeme

-id_komentara

-id_kategorije

 

 

Jeli bolje stavit kod svakog članka id_kategorije, ili unutar kategorije u polju id_članci stavit više id_članka.

 

I dal se može uopće stavit u polje lista id-a.

 

Dobro bi došao bilo koji tip same konstrukcije baze, google je nekako škrt što se tog tiče. 

 

 
0 0 hvala 0
15 godina
offline
RE: Konstrukcija MySql baze

Pravilno je staviti kod svakog članka id_kategorije.

 

Konstrukcija bi trebala izgledati ovako:

 

Korisnik:

-id

-nadimak

-password

 

Komentari:

-id

-id_članka

-id_korisnika

-komentar

-vrijeme

 

Kategorija:

-id

-ime

-opis

-vrijeme

 

Članak:

-id

-id_kategorije

-id_korisnika

-naziv

-vrijeme

 

17 godina
offline
RE: Konstrukcija MySql baze
struja kaže...

 

Dobro bi došao bilo koji tip same konstrukcije baze, google je nekako škrt što se tog tiče. 

 

Imas milijardu i jedan ebook o arhitekturi, optimizaciji, racionalizaciji jada jada baza podataka. I to za levele od njubare do admina. 

Idemo kod Petre Sanader na party... nema joj staroga doma!
16 godina
neaktivan
offline
RE: Konstrukcija MySql baze

A da bi korisnik mogao stavit članke među favorite trebala bi još jedna baza?

Nešto ovako

 

Favoriti:

-id

-id_članka

-id_korisnika

17 godina
offline
RE: Konstrukcija MySql baze
struja kaže...

A da bi korisnik mogao stavit članke među favorite trebala bi još jedna baza?

Nešto ovako

 

Favoriti:

-id

-id_članka

-id_korisnika

Tako je...

Idemo kod Petre Sanader na party... nema joj staroga doma!
16 godina
neaktivan
offline
Konstrukcija MySql baze
nešto ovako?

CREATE TABLE IF NOT EXISTS `article` (
`article_id` int(10) NOT NULL AUTO_INCREMENT,
`article_title` tinytext COLLATE utf8_unicode_ci NOT NULL,
`article_date` int(11) DEFAULT '0',
`user_id` int(10) DEFAULT '0',
`category_id` int(10) DEFAULT '0',
`article_text` text COLLATE utf8_unicode_ci NOT NULL,
`article_show` tinyint(1) DEFAULT '0',
PRIMARY KEY (`article_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS `category` (
`category_id` int(10) NOT NULL AUTO_INCREMENT,
`category_nam/e` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
`category_desc` tinytext COLLATE utf8_unicode_ci NOT NULL,
`category_time` int(11) DEFAULT '0',
`category_show` tinyint(1) DEFAULT '0',
PRIMARY KEY (`category_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS `comments` (
`comment_id` int(10) NOT NULL AUTO_INCREMENT,
`user_id` int(10) DEFAULT '0',
`article_id` int(10) DEFAULT '0',
`comment_date` int(11) DEFAULT '0',
`comment_text` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`comment_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS `user` (
`user_id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`password_new` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`realname` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
`active` int(1) DEFAULT '0',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
www.prijevodi-online.org
Moj PC  
0 0 hvala 0
17 godina
offline
Konstrukcija MySql baze

Samo sam preletio ali mislim da da...

Idemo kod Petre Sanader na party... nema joj staroga doma!
 
0 0 hvala 0
17 godina
offline
RE: Konstrukcija MySql baze
Snyder kaže...
nešto ovako?

CREATE TABLE IF NOT EXISTS `article` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`title` tinytext COLLATE utf8_unicode_ci NOT NULL,
`created` DATETIME,
`user_id` int(10) NOT NULL,
`category_id` int(10) DEFAULT '0',
`post` text COLLATE utf8_unicode_ci NOT NULL,
`active` tinyint(1) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS `category` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
`description` tinytext COLLATE utf8_unicode_ci NOT NULL,
`category_time` int(11) DEFAULT '0', <- Vrijeme `time` TIME NOW(),??
`active` tinyint(1) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS `comments` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`user_id` int(10) DEFAULT '0',
`article_id` int(10) DEFAULT '0',
`created`DATETIME,
`post` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS `user` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`email` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`password_new` varchar(40) COLLATE utf8_unicode_ci NOT NULL, <Čemu služi???
`name` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
`active` int(1) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Nema potrebe da stavljaš ime tabele uz ime polja (user_id, article_post, itd) uvijek u svom sql upiti možeš koristiti user.id, comments.id, article.id ;)

 

Za registraciju i logovanje korisnika uvijek traži email.

sʌǝ ɾǝ ʞɹǝunןo uɐodɐʞo :( http://clientsfromhell.net/
Poruka je uređivana zadnji put pet 4.2.2011 22:41 (Nix).
17 godina
offline
Konstrukcija MySql baze

ja isto imam naviku stavljati idTabela radi preglednosti i lakseg snalazenja. Nema tu nista lose.

Idemo kod Petre Sanader na party... nema joj staroga doma!
 
0 0 hvala 0
16 godina
neaktivan
offline
Konstrukcija MySql baze

ak zna nesto o potrebama znat ce dodat polja

 

password_new je za zaboravljenu lozinku, to mi je sastavni dio uvijek pa sam stavio

www.prijevodi-online.org
Moj PC  
0 0 hvala 0
17 godina
offline
Konstrukcija MySql baze

Ok, svako ima svoje navike, i ja sam do prije 2 godine isto tako bez nekog reda stavljao nazive za tabele i kolone, onda sam se zainteresovao za cakephp, koji ima određena pravila imenovanja pri dizajniranju baze podataka i pisanju php koda. Što me je dovelo u red, te mi je danas nezamislivo raditi a da ne primjenjujem ta pravila.

sʌǝ ɾǝ ʞɹǝunןo uɐodɐʞo :( http://clientsfromhell.net/
Poruka je uređivana zadnji put sub 5.2.2011 19:10 (Nix).
Moj PC  
0 0 hvala 1
17 godina
offline
RE: Konstrukcija MySql baze
Nix kaže...

...određena pravila imenovanja pri dizajniranju baze podataka

Pa zapravo je otprilike ovo nacin na koji i ja pisem :)

Definitivno se lakse snaci prilikom velikih SQL Query-a (iako danas koristim LINQ 2 SQL, ali dok sam koristio obicne sql upite, sami queryi su bili puno preglediniji).

Idemo kod Petre Sanader na party... nema joj staroga doma!
17 godina
neaktivan
offline
Konstrukcija MySql baze

Sve zavisi do navike al mislim da jedan od boljih načina kako pisati nazive tablica i polja je sljedeći:

 

  1. Nazivi tablica da budu u množini (npr. Korisnici, Racuni, itd)
  2. Svi nazivi tablica i polja imaju prvo veliko slovo za svaku riječ, također nazivi se pišu bez underscore-a (npr. VrsteKorisnika, UserName a ne Vrste_Korisnika ili user_name sl.)
  3. identity key ili primarykey se naziva po imenu tablice (npr RacuniID, VrsteKorisnikaID, itd.)

 

Primjer tvoje baze bi izgleda ovako:

Korisnici

-KorisniciID

-UserName

-Password

 

Komentari

-KomentariID

-ClanciID

-KorisniciID

-Komentar

-Vrijeme

 

Kategorije

-KategorijeID

-Ime

-Opis

-Vrijeme

 

Clanci

-ClanciID

-KategorijeID

-KorisniciID

-Naziv

-Vrijeme

 

to je jedan od načina, uglavnom imaš dosta primjera po netu. Po meni je ovaj najpregledniji i koristim ga u svim svojim projektima.

Checked-out since 1983
 
1 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice