Avatar billede gil-galad Nybegynder
26. juni 2004 - 15:24 Der er 19 kommentarer og
2 løsninger

Hvor mange tabeller er det "ok" at bruge?

Hej

Jeg vil til at lave hele min side database baseret, men helt hvordan vd jeg ikke endnu. Lad os sige jeg har en links-sektion, en  wallpaper-sektion osv... Har jeg så ret i at man skal lave en tabel  til hver sektion? altså 10-15 tabeller?

(fx. links-sektion, vil jeg putte i database, sammen med deres kategori, og hvis brugeren så vælger kategori-4, så kommer alle de links)
Avatar billede arne_v Ekspert
26. juni 2004 - 15:29 #1
Du skal have det antal tabeller som passer til din problem stilling.

D.v.s. at du laver tabel strujtur ud fra de data du skal gemme.

Kan det være i 1 tabel så fint. Kræver det 1000 tabeller så fint.
Avatar billede mahler Nybegynder
26. juni 2004 - 15:29 #2
Det nemme svar er at det er ok at bruge, dem du har brug for.

10-15 tabller er ikke specielt mange, men at lave en tabel for hver sektion lyder forkert i mine ører... Du skal nok snarere have et felt i hver tabel, der fortæller hvilken sektion posterne du udtrækker hører til.
Avatar billede gil-galad Nybegynder
26. juni 2004 - 16:07 #3
mahler>> Du kan lige se siden, og så se princippet... Vil det være smart med én tabel?:

linksektion: http://spiff.users.whitehat.dk/index.php?action=links

wallpaper: http://spiff.users.whitehat.dk/index.php?action=andet&mode=bg_screen&wallpaper=1

solsystemet: http://spiff.users.whitehat.dk/index.php?action=solsystemet (der er ca. 3 sider for hver planet)

og så en hel masse andet.....
Avatar billede gil-galad Nybegynder
26. juni 2004 - 16:08 #4
Avatar billede arne_v Ekspert
26. juni 2004 - 16:16 #5
Det afgørende for om hver sektion skal have sin egen tabel eller skal ligge
i samme tabel er om de pågældende entiteter har de samme attributter eller
ej.

samme => en tabel
forskellige => forskellige tabeller

entitet = det der skal gemmes
attribut = oplysning som beskriver der skal gemmes
Avatar billede mahler Nybegynder
26. juni 2004 - 17:29 #6
umiddelbart udfra hvad man kan se, så ville jeg gætte på du skulle have en "links"-tabel, hvor der er url, titel, "anbefales", sprog og sektion (sikkert lidt mere).

Jeg ville måske udfra dit site map gætte på du måske også skulle have en "planet"-tabel til fakta og artikel-teksten.

Der er dog mange måde at gemme sådanne data på.

Jeg ville normalt nok have en "rum-objekt" tabel, hvor der var et id, navn, type og "parent" og en "rumobjekt-fakta" tabel hvor jeg gemte: rumobjekt_id, fakta, værdi
- muligvis en rum-fakta-tabel, hvor jeg gemte de mulige fakta (id, fakta_navn).

hvis typen var "måne" ville parent" pege på den planets id, som månen tilhører, var det en planet måske den sol, som planeten hører til (måske det univers) og er det ikek aktuelt ville den bare være tom.
Avatar billede gil-galad Nybegynder
26. juni 2004 - 19:24 #7
ok, jeg har nu lavet en tabel links:

# Struktur dump for tabellen `links`
#

CREATE TABLE `links` (
  `kat` int(11) default NULL,
  `url` varchar(32) NOT NULL default '',
  `link` varchar(32) NOT NULL default '',
  `tekst` text,
  `rating` varchar(32) NOT NULL default '',
  `sprog` varchar(32) NOT NULL default ''
) TYPE=MyISAM;

#
# Data dump for tabellen `links`
#

INSERT INTO `links` VALUES (1, 'http://www.google.com', 'Google', 'Dette er en søgemaskine der er god.', 'anbefales', 'engdan');
INSERT INTO `links` VALUES (7, 'http://www.exp.dk', 'Eksperten', 'Dette er et IT-forum.', 'normal', 'dan');
INSERT INTO `links` VALUES (7, 'http://www.hejsa.com', 'Hejsa', 'Hejsa. com... et auktions hus.', 'normal', 'eng');


___________________


og prøver så at hive data ud sådan her:
<?php

require("connect.php");

$kat = ($_GET["kat"]);

$res = mysql_query("SELECT url, link, tekst, rating, sprog FROM links WHERE kat = '$kat'") or die(mysql_error());
if( $row = mysql_fetch_array($res) ) {
  echo '<a href="".$row['url']."" target="_blank">".$row['link']."</a>';
}
else {echo "Ingen links fundet i denne kategori.";}
?>

Det virker næsten, men hvis der nu er to links i kategori 7 bliver kun det første vist. hvordan retter jeg det?
Avatar billede arne_v Ekspert
26. juni 2004 - 19:42 #8
Du skal have en while løkke i din PHP kode som looper over rækkerne.
Avatar billede arne_v Ekspert
26. juni 2004 - 19:43 #9
Jeg vil iøvrigt anbefale dig at gøre url og link længere end 32.

Og sprog måske kortere.
Avatar billede gil-galad Nybegynder
26. juni 2004 - 19:44 #10
Hvilke datatyper kan jeg bruge til det?
Avatar billede arne_v Ekspert
26. juni 2004 - 19:45 #11
Stadig varchar bare med en anden max længde.

F.eks.

varchar(200)
Avatar billede gil-galad Nybegynder
26. juni 2004 - 19:58 #12
skal jeg så slete hele tabellen for at ændre det?
Avatar billede gil-galad Nybegynder
26. juni 2004 - 19:59 #13
nej, har fundet ud af det
Avatar billede arne_v Ekspert
26. juni 2004 - 20:00 #14
Jeg siger det fordi man jo sagtes kan have url/link som er længere end 32 tegn.
Avatar billede gil-galad Nybegynder
26. juni 2004 - 20:17 #15
ja, det kan man. Men "link" er ment som det linket hedder.. <a href="http://www.exp.dk">$link</a>
Avatar billede gil-galad Nybegynder
26. juni 2004 - 22:51 #16
En sidste lille ting:
jeg har lavet sådan at, hvis der ingen kategori er angivet i URL'en, så skal jeg have skrevet en tekst ud som står i databasen. Jeg ville meget gerne have at den tekst også kunne ligge i den samme tabel. Ligenu har jeg lavet en løsning, som nok ikke er særlig smart... Jeg kan alligevel ikke finde ud af at trække indholdet ud...

Se her: http://spiff.users.whitehat.dk/hmm.jpg
Avatar billede mahler Nybegynder
26. juni 2004 - 23:01 #17
hvorfor samme tabel? de er ikke en knap ressource, så hvis det er praktisk og du vil have alternativet liggende i databasen, så kan du da bare lave en ny tabel...
Avatar billede gil-galad Nybegynder
26. juni 2004 - 23:05 #18
jeg tror bare det vil være lettere at holde styr på, men jeg får en anden idé. Jeg laver bare en anden tabel som kun indeholder de tekster der skal trækkes ud hvis ingen kategori, id eller andet er angivet...


Mahler og Arne V    Smid et svar!
Avatar billede mahler Nybegynder
26. juni 2004 - 23:07 #19
ok
Avatar billede arne_v Ekspert
26. juni 2004 - 23:10 #20
svar
Avatar billede gil-galad Nybegynder
26. juni 2004 - 23:15 #21
tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester