Article View: dk.edb.database
Article #15213Re: 1-M relation felt og anden tabel imellem
From: James Olsen
Date: Tue, 12 Jun 2001 15:36
Date: Tue, 12 Jun 2001 15:36
91 lines
4439 bytes
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-mailReferences:
<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