ugrás a tartalomhoz

SQL struktúra dilemma

unregistered · 2010. Aug. 18. (Sze), 16.12
Hello!

Van egy oldal ahova híreket lehet feltölteni különböző kategóriákban, ami SQL-be mentődik. Az a kérdésem hogy ezek mehetnek ömlesztve egy táblába vagy minden kategóriának csináljak egy táblát és az a biztos?

Részletesebben:
Legyen csak egy "hirek" tábla amibe úgy veszem fel a mezőket (híreket) hogy meg van adva a kategóriájuk és utána ebből a táblából keresi ki az adott kategóriához tartozó híreket, vagy készítsek minden kategóriának saját táblát (pl kat1_hirek, kat2_hirek, stb) és a hír kategóriájának kiválasztásával menti a megfelelő táblába illetve a kilistázásnál a megfelelőből veszi ki?

A következő dilemmám az hogy minden hírhez lehet megjegyzést írni a felhasználóknak. Itt is az a kérdésem hogy hozzak létre egy "comments" táblát amibe az összes megjegyzés mentődik és ugye az oldalon amikor megnyitsz egy hírt akkor egy azonosítószám alapján kilistázza az adott hírhez tartozó kommenteket, vagy minden hírhez automatikusan hozzak létre egy táblát amibe a kommentek mentődnek?

Előre is köszönöm a segítséget!
 
1

Normalizálás

Poetro · 2010. Aug. 18. (Sze), 17.05
Ha legalább eljutsz 3. szintű normálformáig, az már elég lesz. Adatbázis normalizálásról rengeteg cikk van a neten.
2

Normal forma

Emul · 2010. Aug. 18. (Sze), 17.11
Jo dolog a normalizalas, de egy nagy terhelesu oldalnal botorsag arra torekedni. Bar itt nyilvan nem arrol van szo hogy ubernagyterhelest fog kapni az oldal (de sosem lehet tudni).
Lenyeg a lenyeg nem akarlak eltantoritani a normalizalas megtanulasatol, mert mindenkeppen nagyon jo alap.

Amugy hogy az eredeti temahoz is hozzaszoljak.
Semmikeppen nem gyujtenem kulon a kategoriakat, egyszer lehet hogy szukseged lesz hasonlo perverziora de addigra mar az alkalmazasod elkoptatott par szervert. Es van par 100 millio bejegyzesed a tabalaban.
Szoval csinalsz egy tablat amiben a cikkeket tartod. Ha elore meghatarozott ritkan modosulo kategoria listad van akkor erdemes lehet egsyzeruen felvenni ENUM-kent. Ha ez nem all akkor mehet kulon tablaba a kategoria, es kulsokulccsal "behuzni" cikkeket tarolo tablaba. A hozzaszolasokat ofkoz egy darab tablaba told, szinten egy kulso kulccsal a cikkeket tarolo tablara.
Remelem ertheto amit szerettem volna irni.
3

botorság?

tiku I tikaszvince · 2010. Aug. 18. (Sze), 18.07
A "botorság" kifejezést cseppet erősnek érzem.
Szerintem mindenképpen érdemes a normalizált formát választani. Amikor majd jelentkezik a terhelés, akkor látod meg, hogy mik a kritikus pontok, és hogy hol érdemese denormalizálni.

De megközelítheted ezt a dolgot a praktikum oldaláról is. Mi történik ha új kategóriát kell létrehozni? Gyártasz mindig egy új táblát? Nem egyszerűbb a kategória táblába egy új rekordot rögzíteni, és majd hivatkozni rá? Vagy mi történik, ha átalakul a kategória rendszer? A rekordokat egyik táblából a másikba másolni az egyszerűbb, vagy módosítani egy mező értékét?
4

"A honatyák barátságos

kuka · 2010. Aug. 18. (Sze), 18.23
"A honatyák barátságos mérkőzésen 10-0 arányban elverték az újságírók csapatát." Ez nem hír, de lehetne. Akkor milyen kategóriába raknád? Mert szerintem többe is tartozik: sport és politika. Szerintem:

create table hir (
  id serial,
  datum timestamp with time zone not null default current_timestamp,
  cim varchar(100) unique not null,
  szoveg text not null
);

create table kategoria (
  id serial,
  szulokategoriaid integer,
  nev varchar(100) unique not null
);

create table hir_kategoria_kapcs (
  hirid integer not null references hir(id) ,
  kategoriaid integer not null references kategoria(id),
  unique (hirid,kategoriaid)
);

create table hozzaszolas (
  id serial,
  datum timestamp with time zone not null default current_timestamp,
  hirid integer not null references hir(id),
  szoveg text not null
);
Gondolom valaki megkritizálná. Érdekelnek a vélemények.
Jo dolog a normalizalas, de egy nagy terhelesu oldalnal botorsag arra torekedni.
Ezzel teljes mértékben egyetértek.
5

azért mert...

unregistered · 2010. Aug. 18. (Sze), 22.31
Onnan jött a bizonytalanságom (merthogy egy táblába gondoltam én is) hogy ha egy táblába rakom a dolgokat akkor egy idő után igaz hogy cikkenként max 100 hozzászólásra számítunk, de akkor 100 cikknél már 10000 hozzászólást jelent. Tehát ebből adódik hogy ha van egy táblám amiben van 10000 rekord az jó nekem? Nem vagyok hozzászokva nagy adatbázisokhoz, kb pár száz rekordos volt az eddigi legnagyobb... ezért kérdezem inkább meg mert később szívásabb különvenni mint egyberakni ennyi rekordot...
6

Semmi

janoszen · 2010. Aug. 19. (Cs), 05.25
Ha jól van indexelve, akkor 10k rekord semmi. Én már láttam közelröl pár millió soros táblán LIKE keresést, na az már kezdett kellemetlen lenni.
7

Tehát ebből adódik hogy ha

kuka · 2010. Aug. 19. (Cs), 08.30
Tehát ebből adódik hogy ha van egy táblám amiben van 10000 rekord az jó nekem?
Sokkal jobb mint 100 tábla, mindegyikben 100 bejegyzés. Gondold picit tovább: ha a kedves látogató nyom egy keresést, akkor 100 selectet hajtasz végre, vagy 1-et 99 unionnal?
8

ok ok megértettem ;)

unregistered · 2010. Aug. 19. (Cs), 13.30
Nah igazából a kérdést nem tudtam jól feltenni... miszerint mi a jobb ha van 1 táblám rengeteg record-al, vagy van sok táblám max 100 record-al...

Köszönöm szépen a segítséget mindenkinek!