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?
BoxROx 24.02.2015 Одељци: Зид Питања и одговори Ивица BoxROx | Кључне речи: drustvena mreza social networking baza database Базе података mysql IT Akademija
|
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.
Заинтересовани за часове програмирања могу ме контактирати путем мејла [email protected]
Ивица 25.02.2015 Одељци: Зид Питања и одговори Ивица |
0
|
©Библиотека++ 2024 Развој сајта Ивица Лазаревић