🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: dk.edb.database
Article #15213

Re: 1-M relation felt og anden tabel imellem

#15213
From: James Olsen
Date: Tue, 12 Jun 2001 15:36
91 lines
4439 bytes
"Ulrik Buchholtz" <ulrikb@gmx.net> wrote in message
news:87zobekbrq.fsf@gmx.net...
>
> Dette er nok et rimeligt hypotetisk (og rent teoretisk, for ikke at
> sige langh�ret) sp�rgsm�l, men alligevel: hvordan konstrueres en
> database, hvor et tilf�ldigt (alts� ikke et bestemt) felt kan have en
> 1-M relation med en tabel?

Relationer er logiske - det du definere er referential-integritet, at man s�
tit bruger de samme referencer i forbindelse med join's er en
"tilf�ldighed".

>
> Normalt taler man om relationer tabeller imellem og felter imellem,
> men ikke hvor felter i en tabel har en bestemt relation til en anden
> tabel.
>
> Problemet opst�r fx i den (hypotetiske?) situation, hvor alle
> tekstfelter i en database skal v�re tilg�ngelige p� et vilk�rligt
> antal sprog. Hvis det var to bestemte sprog kunne man have fx felt_en
> og felt_da for hvert tekstfelt, men det g�r ikke, hvis der er mange
> sprog, som man ikke kender p� designtidspunktet.
>
> Jeg har forestillet mig noget a la f�lgende:
>
> -- BEGIN SQL
> CREATE TABLE string (
>     string_id       INTEGER      NOT NULL PRIMARY KEY
> );
>
> CREATE TABLE language (
>     language_id     INTEGER      NOT NULL PRIMARY KEY,
>     code            CHAR(2)      NOT NULL CHECK (lower(code) = code),
>     region          CHAR(2)      CHECK (lower(region) = region),
>     name            INTEGER      NOT NULL REFERENCES string,
>     UNIQUE(language_id, region)
> );
>
> CREATE TABLE string_language (
>     string_id       INTEGER      NOT NULL REFERENCES string
>                                  ON DELETE CASCADE,
>     language_id     INTEGER      NOT NULL REFERENCES language
>                                  ON DELETE CASCADE,
>     string          TEXT         NOT NULL,
>     PRIMARY KEY(string_id, language_id)
> );
>
> CREATE TABEL tabel (
>     ...
>     textfield       INTEGER      NOT NULL REFERENCES string,
>     ...
> );
> -- END SQL
>
>
> Problemet med ovenst�ende er (hvad jeg kan se):
>   1. Det er grimt (IMHO). Hvorfor have en tabel med kun et felt.
>   2. Forholdvist sv�rt at vedligeholde (vil jeg tro).
>   3. D�rlig integritets-kontrol. Der er ingen kontrol med, at alle
>      string-r�kker bliver refereret til af b�de en string_language og
>      tabel.name.
>   4. Det er enormt sv�rt at tr�kke data ud.
>
> Kan nogen af jer komme p� et bedre bud p� en l�sning?

Well, hvis jeg har forst�et hvad det er du vil s� ville

string_id, language_id, text

fungere ganske udem�rket, du laver s� bare et "compound" indeks p�
string_id, language_id. Du skal nok lige kigge p� om du skal indeksere med
string_id eller language_id f�rst - det vil afh�nge af hvordan du laver
udtr�kket. Et sprog af gangen og alle tekster s� start med language_id
ellers skal du nok bare bruge det med string_id f�rst.

Som sagt jeg er ikke helt sikker p� hvad det er du vil men hermed et skud i
t�gen......



Den skal v�re
> liges� fleksibel p� den m�de at forst�, at alle tekstfelter skal
> kunne forefindes p� et vilk�rligt antal sprog.
>
> Der sp�rges ikke til hensyntagen til hastighed i f�rste omgang ;-)
> En anden gang kan vi tage fuldtekst-s�gning i et vilk�rligt sprog i en
> database a la denne p� 1TB!
>
> --
> Ulrik Buchholtz
Technical Details
Message-ID: <9g5cve$1s4h$1@news.cybercity.dk>
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!isdnet!fr.clara.net!heighliner.fr.clara.net!fr.usenet-edu.net!usenet-edu.net!news.netsite.dk!news.cybercity.dk!not-for-mail
References: <87zobekbrq.fsf@gmx.net>

Show Full Headers
Complete Article Headers
X-Google-Language: DANISH,ASCII
X-Google-Thread: fcdf9,8a0f54370a1d52a9
X-Google-Attributes: gidfcdf9,public
X-Google-ArrivalTime: 2001-06-12 08:37:27 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!isdnet!fr.clara.net!heighliner.fr.clara.net!fr.usenet-edu.net!usenet-edu.net!news.netsite.dk!news.cybercity.dk!not-for-mail
From: "James Olsen" <james_olsen@vip.cybercity.dk>
Newsgroups: dk.edb.database
Subject: Re: 1-M relation felt og anden tabel imellem
Date: Tue, 12 Jun 2001 17:36:19 +0200
Organization: CyberCity Internet
Lines: 93
Message-ID: <9g5cve$1s4h$1@news.cybercity.dk>
References: <87zobekbrq.fsf@gmx.net>
NNTP-Posting-Host: 217.157.109.35
X-Trace: news.cybercity.dk 992360239 61585 217.157.109.35 (12 Jun 2001 15:37:19 GMT)
X-Complaints-To: abuse@cybercity.dk
NNTP-Posting-Date: Tue, 12 Jun 2001 15:37:19 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400