/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
SQL Problem
Fra : Allan Schuster Bach


Dato : 18-09-02 20:05

Jeg er igang med at udvikle et system, som skal kunne køre på flere
forskellige database typer, som er MYSQL (hvilken jeg ikke ved en sk.. om),
MS SQL-server 2000 samt en MS access database.
Dette skulle principelt heller ikke være noget problem, for det er jo bare
at skift databaseprovider i mit program.

Men der hvor jeg er løbet ind i et seriøst problem, er omkring oprettelsen
af tabeller i de forskellige databaser.

Eksempel 1. fra en access
create table Metadata (ID COUNTER, Script VARCHAR(50), Lablenavn
VARCHAR(50));

Eksempel 2. fra en MS SQL
create table Metadata (ID INTEGER not null, Script CHAR(50) null, Lablenavn
CHAR(50) null);

Begge sql script oprette en database med 3 felter, som er id, script og
labelnavn. Problemet er bare at syntaxen ikke er ens, og så har jeg ikke
engang kikket på MYSql endnu.

Findes der en måde hvorpå, jeg kan "stadardisere" mit sql, så jeg kun
behøver et SQL-script. Eller skal jeg lave et SQL script for hver database
jeg vælger. Jeg ville jo helst have et SQl-script, som kan oprette en tabel
på en vilkårlig database, men det kan åbenbart ikke rigtig lade sig gøre,
eller har jeg overset noget.

Allan Bach




 
 
Stig Johansen (19-09-2002)
Kommentar
Fra : Stig Johansen


Dato : 19-09-02 05:37

Hej.

"Allan Schuster Bach" <newskonto@schuster.dk> wrote in message
news:amaiq6$sok$1@news.cybercity.dk...
> Jeg er igang med at udvikle et system, som skal kunne køre på flere
> forskellige database typer, som er MYSQL (hvilken jeg ikke ved en sk..
om),
[snip]
>
> Findes der en måde hvorpå, jeg kan "stadardisere" mit sql, så jeg kun
> behøver et SQL-script.

Desværre. Der er en del forskel på de forskellige database systemer.
Jeg har selv et data dictionary kørende, hvor jeg trækker scriptet ud fra
definittionerne, men det er nok lige i overkanten til et enkelt projekt.

Du kan få følgende råd:
1) Undgå stored procedures, med mindre det er sidste udvej.
2) Undgå feltnavne, der kan ligne reservede ord i de forskellige systemer
( eks. by ).
3) Benyt views i det omfang der er tale om JOINs, ( Oracle er meget
speciel ).
4) Hjælp optimizeren ved at undgå implicitte JOIN's.
5) Undgå SELECT *.
6) Undgå triggers

Med hensyn til dine scripts, junne jeg forestille mig, at du med fordel kan
beskrive tabellerne i XML, og lave en XLST til hver type database.

--

Med venlig hilsen/Best regards
Stig Johansen
Stig.Johansen@udvikling.it.dk
(remove dot dk)






Snedker (19-09-2002)
Kommentar
Fra : Snedker


Dato : 19-09-02 15:25

On Thu, 19 Sep 2002 06:37:02 +0200, "Stig Johansen"
<stig.johansen@udvikling.it> wrote:


>Med hensyn til dine scripts, junne jeg forestille mig, at du med fordel kan
>beskrive tabellerne i XML, og lave en XLST til hver type database.

Hvordan gør man det? Links, eksempel eller noget?

mvh
Morten Snedker
---
Klip det citerede væk, du ikke besvarer
Besvar venligst under det citerede

Stig Johansen (20-09-2002)
Kommentar
Fra : Stig Johansen


Dato : 20-09-02 04:37

Hej,

"Snedker" <morten@nospam_dbconsult.dk> wrote in message
news:cgnjoucg03hljejhbvffgck2rir22sn0tu@4ax.com...
> On Thu, 19 Sep 2002 06:37:02 +0200, "Stig Johansen"
> <stig.johansen@udvikling.it> wrote:
>
>
> >Med hensyn til dine scripts, junne jeg forestille mig, at du med fordel
kan
> >beskrive tabellerne i XML, og lave en XLST til hver type database.
>
> Hvordan gør man det? Links, eksempel eller noget?

Det var bare en ide,som sagt har jeg mit eget 'object repository', men ideen
går ud på noget ala:

definer dit eget typesæt,
char
varchar
date
integer
osv..

beskriv din tabel i xml med dit eget typesæt.

disse beskrivelser er din 'master' for datadefinitioner.

for hver databasetype laver du et enkelt xsl dokument, hvor du replacer dine
egne typer med de implementerede typer (lidt eksempler fra db's i flæng)
eksempelvis:
integer -> int
memo -> longvarchar
date -> smalldatetime
binary -> blob
osv.

Med hensyn til understøttelse af felt typer og erklæring, bruger jeg selv m$
odbc sdk. (du må selv finde det hvis det eksisterer endnu)

Det kræver selvfølgelig, at du installerer selve database produktet, eller
har adgang til kundens system.

Med hensyn til xml og xsl, skal du nok finde en anden ng.

--

Med venlig hilsen/Best regards
Stig Johansen
Stig.Johansen@udvikling.it.dk
(remove dot dk)




Kristian Damm Jensen (19-09-2002)
Kommentar
Fra : Kristian Damm Jensen


Dato : 19-09-02 08:53

Allan Schuster Bach wrote:
>
> Jeg er igang med at udvikle et system, som skal kunne køre på flere
> forskellige database typer, som er MYSQL (hvilken jeg ikke ved en sk.. om),
> MS SQL-server 2000 samt en MS access database.
> Dette skulle principelt heller ikke være noget problem, for det er jo bare
> at skift databaseprovider i mit program.
>
> Men der hvor jeg er løbet ind i et seriøst problem, er omkring oprettelsen
> af tabeller i de forskellige databaser.
>
> Eksempel 1. fra en access
> create table Metadata (ID COUNTER, Script VARCHAR(50), Lablenavn
> VARCHAR(50));

"Counter" er ikke standard, og kan derfor ikke forventes at være til
stede i et andet DBMS. Brug integer i stedet, som du gør nedenfor.

> Eksempel 2. fra en MS SQL
> create table Metadata (ID INTEGER not null, Script CHAR(50) null, Lablenavn
> CHAR(50) null);

Hvorfor skifter du her fra varchar til char? MSSQL kender udemærket
varchar.

> Begge sql script oprette en database med 3 felter, som er id, script og
> labelnavn. Problemet er bare at syntaxen ikke er ens, og så har jeg ikke
> engang kikket på MYSql endnu.
>
> Findes der en måde hvorpå, jeg kan "stadardisere" mit sql, så jeg kun
> behøver et SQL-script. Eller skal jeg lave et SQL script for hver database
> jeg vælger. Jeg ville jo helst have et SQl-script, som kan oprette en tabel
> på en vilkårlig database, men det kan åbenbart ikke rigtig lade sig gøre,
> eller har jeg overset noget.

Hold dig til SQL92 standarden. Både access og mssql understøtter stort
set alt fra denne standard.

Stig giver desuden en række udmærkede råd for de mere specielle ting.


--
Kristian Damm Jensen | Feed the hungry at www.thehungersite.com
kristian-damm.jensen@cgey.com | Two wrongs doesn't make a right,
ICQ# 146728724 | but three lefts do.


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste