projekt - czy zbyt znormalizowany?
aaawro - 23-08-2007 00:02
projekt - czy zbyt znormalizowany?
Witam,
Otóż sprawa ma się tak. Pisane są recenzje przez recenzentów. Muszę zbudować bazę tych opinii. Ta recenzja ma tytuł, treść, może być zatwierdzona lub odrzucona przez edytora. Jest jeszcze trochę takich elementów - razem może z 15. (btw: elementy SQL piszę w notacji MSSQL)
Podstawowa tabela to
Tabela RECENZJE: id_recenzji, data dodania recenzji, autor recenzji, tytuł, treść.
Reszta - typu na przykład wartości boolean - zatwierdzony/nie zatwierdzony jest w osobnej tabeli. Tak:
Tabela POTWIERDZENIA id_potwierdzenia, id_recenzji, zatwierdzone(bit) NULL
Są też pola tekstowe które mogą ale nie muszą być wypełnione - i często nie są. Jest ich z 5. Dla każdego jest osobna tabela.
id_polatekstowego1, id_recenzji, tekst_recenzji.
id_polatekstowego2, id_recenzji, tekst_recenzji. ..one maja rożne znaczenia dlatego są w osobnych tabelach.
Słyszałem że, że...., no..że tak można, ...można to zrobić ale, hmm..no ale nie..jestem..pewny. Dobre to jest?
Jakoś nie chce doprowadzić do sytuacji w której podstawowa relacja RECENZJE była by obarczona tak duża ilością atrybutów wypełnioną dużą ilościa NULLi.
Proszę o poradę w tej sprawię, z góry dziękuję. Miłosz
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
AreKc - 23-08-2007 00:02
aaawro pisze:
> Reszta - typu na przykład wartości boolean - zatwierdzony/nie zatwierdzony > jest w osobnej tabeli.
Mnożysz byty ponad potrzebę ;-)
> > Jakoś nie chce doprowadzić do sytuacji w której podstawowa relacja RECENZJE > była by obarczona tak duża ilością atrybutów wypełnioną dużą ilościa NULLi. >
Niepotrzebnie uprzedzasz się do NULLi. Zasadniczo jest tak: relacja 1 do 1 - jedna tabela, 1 do wielu - dwie tabele, wiele do wielu - trzy tabele.
Jeśli chcesz mieć wycinki tabeli bez NULLi, zrób widoki ;-)
Thread - 23-08-2007 00:02
AreKc pisze: > aaawro pisze: > >> Reszta - typu na przykład wartości boolean - zatwierdzony/nie >> zatwierdzony >> jest w osobnej tabeli. > > Mnożysz byty ponad potrzebę ;-)
Dokładnie!
> >> >> Jakoś nie chce doprowadzić do sytuacji w której podstawowa relacja >> RECENZJE >> była by obarczona tak duża ilością atrybutów wypełnioną dużą ilościa >> NULLi. >> > > Niepotrzebnie uprzedzasz się do NULLi. Zasadniczo jest tak: relacja 1 do > 1 - jedna tabela, 1 do wielu - dwie tabele, wiele do wielu - trzy tabele. > > Jeśli chcesz mieć wycinki tabeli bez NULLi, zrób widoki ;-)
Myślę, że wystarczy trzy tabele (chyba, że chcesz bardziej rozbudowywać). Wyklikane i stworzone w 3 min w PostgreSQLu:
CREATE TABLE recenzje ( id_recenzji serial NOT NULL, data_dodania date NOT NULL, tytul varchar(50) NOT NULL, tresc text NOT NULL, zatrwierdzenie bool, tresc_recenzji text, autor int4 NOT NULL, recenzent int4 NOT NULL, CONSTRAINT recenzje_pkey PRIMARY KEY (id_recenzji), CONSTRAINT recenzje_autor_fkey FOREIGN KEY (autor) REFERENCES autor (id_autora) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT recenzje_recenzent_fkey FOREIGN KEY (recenzent) REFERENCES recenzent (id_recenzenta) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION )
CREATE TABLE autor ( id_autora serial NOT NULL , imie varchar(25) NOT NULL, nazwisko varchar(30) NOT NULL, adres varchar(200), CONSTRAINT autorzy_pkey PRIMARY KEY (id_autora) )
CREATE TABLE recenzent ( id_recenzenta serial NOT NULL DEFAULT, imie varchar(25) NOT NULL, nazwisko varchar(30) NOT NULL, stopien_naukowy varchar(30), // można dodać np. oddzielną tabelę słownikową ze stopniami, np.: doktor, profesor, itp. CONSTRAINT recenzjent_pkey PRIMARY KEY (id_recenzjenta) )
To tylko propozycja...
Pozdrawiam, Thread -- ..:: Thread ..:: Andrzej Kłopotowski ..:: thread{at}o2{bez_tego}{dot}pl
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Lublin - praca dla grafika w projektach e-learning & m-learning
Re: Jaka firma w kraju wykonuje projektuje i wykonuje fonty?
=?iso-8859-2?q?Projektu_/_layoutu_strony_tytu=B3owej_portalu_spo=B3eczno=B6 ci_internetowej?=
=?iso-8859-2?Q?=5BORACLE=5D_-_projekcja_kolumn_okre=B6lonego_typu?=
=?iso-8859-2?q?PRACA_du=BFy_projekt_dla_2-3_os=F3b?=
Poszukiwany: Administrator/projektant bazy danych postgreSQL/Warszawa
Projekt =?ISO-8859-2?Q?Ok=B3adki_na_CD_-_cena=3F?=
=?iso-8859-2?q?Zlec=EA_projekt_wizyt=F3wki.?=
=?ISO-8859-2?Q?pro=B6ba_o_ocen=EA_projektu?=
Re: Projekty JSP, PHP, Java, SQL, C i C++ na zaliczenie!!
zanotowane.pldoc.pisz.plpdf.pisz.plponland.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|