Postovani, 

napravio sam sledece tabele:
 

Tabela: "korisnici":

    id         INT
    ime        VARCHAR(45)
    prezime        VARCHAR(60)
    email        VARCHAR(100)
    korisnicko_ime    VARCHAR(45)
    biografija    TEXT(1000)
    datum_rodj    DATE
    drzava_rodj    VARCHAR(45)

Tabela: "statusi":
    
    id        INT
    naslov_statusa    VARCHAR(60)
    tekst_statusa    TEXT(1000)
    vreme_objave    DATETIME
    korisnik_id    INT

 

E sada imam dilemu kako da osmislim trecu tabelu, koja bi predstavljala "prijateljstva" izmedju korisnika?

Коментари:

Нови одговор Нови коментар

Одговори:

Приказано 1-1 од 1 ставке.

Мислим да си добро почео, само дефиниши примарне и стране кључеве и мислим да би било добро да id буде AUTO_NUMBER.

Табела која повезује пријатеље би могла бити дефинисана на следећи начин:

CREATE TABLE prijateljstva(
    korisnik_id INT NOT NULL,
    prijatelj_id INT NOT NULL,
    PRIMARY KEY(korisnik_id, prijatelj_id),
    FOREIGN KEY (korisnik_id) REFERENCES korisnici(id) ON DELETE CASCADE,
    FOREIGN KEY (prijatelj_id) REFERENCES korisnici(id) ON DELETE CASCADE
)ENGINE=InnoDB;

Имаш кориснике са id бројевима 1, 2 и 3. Ако корисник један има пријатеље 2 и 3,  табела пријатељства би требало да садржи редове:

1,2
1,3
2,1
3,1

За добијање свих пријатеља корисника један:

SELECT prijatelj_id FROM prijateljstva WHERE korisnik_id = 1;

Претпостављам да користиш MySQL, па отуда ENGINE=InnoDB. MySQL користи више различитих енџина. InnoDB треба користити тамо где су потребне трансакције и провера референцијалног интегритета, односно готово увек. Свакако, MySQL није једини сервер базе података отвореног кода, а по мом мишљењу није ни најбољи. Углавном, када могу да бирам, ја бирам PostgreSQL, тако да сајт пројекта Библиотека++ у позадини користи PostgreSQL.

Заинтересовани за часове програмирања могу ме контактирати путем мејла lazarevic.ivica@gmail.com

Ивица
25.02.2015
Одељци: Зид Питања и одговори Ивица
0

Коментари:

Нови коментар

©Библиотека++ 2019 Развој сајта Ивица Лазаревић