Adatbázis tervezési probléma

Adatbázis kezelő
rtpln
Hozzászólások: 5
Csatlakozott: 2008. április 18., péntek 11:40

Adatbázis tervezési probléma

Hozzászólás Szerző: rtpln »

A következő elvi problémába ütköztem egy adatbázis tervezése során:
Adott egy cikktörzs tábla a nyilvántartott áruk (egyedek) adataival. DE. A cikktörzben vannak olyan áruk is, amelyek több egyedi áruból összeállított szettek. Minden szett is külön egyedi azonosítóval és attribútumokkal is bír, és 1-n változó darabszámú egyedi árucikkből tevődik össze.
Szükség van olyan lekérdezés(ek)re, amely a szettek esetében megadja az összeállításban szereplő egyedi áruk adatait is (különböző részletességgel).
Addig jutottam, hogy valszeg kell egy olyan kapcsoló tábla, amelyben a cikktörzs tábla szettjeinek egyedi kulcsaihoz az x darabszámú egyedi cikk kulcsait rendeli x db rekordban. Ezzel az a probléma, hogy ugyanabból a táblából egy kapcsoló táblán keresztül ugyanannak a táblának egy más egyedére hivatkoznék. Ez nem is elegáns és nem is vagyok biztos benne hogy működne. Másrészt ezzel a logikával a kapcsolótáblában minden egyedi cikkekhez is kell 1-1 rekord a saját azonosítójával. Ez viszont végtelen és körkörös hivatkozásokhoz vezetne. Vagy nem?
Egyelőre csak ilyen egyszeresen összetett szettek vannak, de később elképzelhető akár a szettek szetjei, szettek szettjeinek szettjei, és így tovább típusú áruk.
Mi a megoldás?
Ms Windows XP • 3.0.X • Ms Windows XP
Avatar
g_123_wert
Önkéntesek
Hozzászólások: 71
Csatlakozott: 2008. február 29., péntek 21:58

Re: Adatbázis tervezési probléma

Hozzászólás Szerző: g_123_wert »

Összedobtam Open System Architect-el (http://www.codebydesign.com/) egy elvi vázlatot, ahogy én elsőre megcsinálnám. Ez egy PostgrSQL fizikai modell, de könnyen lehet máshol is alkalmazni.
Elküldöm az SQL -t is.

-- +---------------------------------------------------------
-- | MODEL : Forum
-- | AUTHOR : g_123_wert
-- | GENERATED BY: Open System Architect
-- +---------------------------------------------------------
-- | WARNING : Review before execution
-- +---------------------------------------------------------

-- +---------------------------------------------------------
-- | CREATE
-- +---------------------------------------------------------
CREATE TABLE cikktorzs
(
cikkid serial NOT NULL,
termek varchar(100) NOT NULL,
EAN varchar(15),
cikkszam varchar(15),
created timestamp without time zone,
CONSTRAINT cikk_pkey PRIMARY KEY (cikkid)
);
CREATE TABLE sets
(
set_id serial NOT NULL,
szett_neve varchar(100) DEFAULT 'N/A' NOT NULL,
termek integer NOT NULL,
sorrend integer DEFAULT 0 NOT NULL,
CONSTRAINT sets_pkey PRIMARY KEY (set_id)
);
ALTER TABLE sets ADD CONSTRAINT szettek_depends_on_cikktorzs
FOREIGN KEY ( termek )
REFERENCES cikktorzs ( cikkid )
NOT DEFERRABLE;
CREATE TABLE groups_from_sets
(
group_id serial NOT NULL,
set_id integer NOT NULL,
sorrend integer DEFAULT 0 NOT NULL,
CONSTRAINT group_pkey PRIMARY KEY (group_id)
);
ALTER TABLE groups_from_sets ADD CONSTRAINT groups_depends_from_sets
FOREIGN KEY ( set_id )
REFERENCES sets ( set_id )
NOT DEFERRABLE;
Csatolmányok
A terv PNG képe
A terv PNG képe
forum.png (9.27 KiB) Megtekintve 1161 alkalommal
Ms Windows XP • 3.0.X • Ubuntu 7.x
Válasz küldése