Avatar billede hasph Nybegynder
28. maj 2007 - 12:54 Der er 9 kommentarer og
1 løsning

Relationel eller non-relationel database

Hej,
First of all: Jeg er ingen databasehej.

Jeg sidder her med et definitionsproblem.
Jeg har skabt en simpel database (skabt via phpMyAdmin) med tre entiteter med tilhørende attributter.
Jeg har i hver entitet defineret en primær nøgle men ingen fremmednøgler.
Mit spørgsmål er om man kan snakke om en relationel database uden at definere andre nøgler end en primærnøgle?
Som jeg forstår det vil der så være tale om en relationel database uden relationer og den er derfor af typen non-relationel.

Jeg ville blive meget glad hvis nogen kunne afhjælpe mit mulige forståelsesproblem.

På forhånd tak,

hasph
Avatar billede arne_v Ekspert
28. maj 2007 - 15:30 #1
MySQL er en relations database.

Du normaliserer og joiner tabeller som ced andre relations databaser.

At det kun er InnoDB og ikke MyISAM tabeller der lader dig enforce
referentiel integritet og at din problem stilling evt. slet ikke
har foreign keys i tabel strukturen ændrer ikke på dette.
Avatar billede hasph Nybegynder
28. maj 2007 - 16:13 #2
Hej arne_v,
tak for dit svar - det gjorde mig lidt klogere...
Har lige læst om InnoDB og MyIsam tabeller og tilsyneladende benytter jeg mig af en MyIsam idet: "Each MyISAM table is stored on disk in three files. The files have names that begin with the table name and have an extension to indicate the file type. A .frm file stores the table definition. The data file has a .MYD (MYData) extension. The index file has a .MYI (MYIndex) extension." (jvf. http://en.wikipedia.org/wiki/MyISAM) og det er præcis således at min database består af en af hver af disse filer med ovenstående ekstension.

Den eneste relation - som jeg forstår det - der konkret eksisterer i mit tilfælde er at indholdet af en attribut med datatypen string, i en database, hentes via php og lagres i en anden databases attribut.
Dette giver således mulighed for redundans men dette mener jeg ikke er noget jeg bør bekymre mig om idet det er det eneste tilfælde det sker i og at den applikation jeg udvikler kun giver mulighed for en indirekte og begrænset påvirkning at attributter.
Skal redundans opnås skal man fysisk tilgå den pågældende database via phpMyAdmin og ændre attributten. Dette bliver dog ikke muligt for brugeren da phpMyAdmin ikke kan tilgåes af denne.

Vil man på baggrund af dette kunne sige

at databasen er relationel men der ikke eksisterer nogen relationer

eller

at databasen er relationel og at der eksisterer relationer, men disse måske er risikable idet de ikke værner mod redundans.

Mvh

hasph

ps. hvordan kan jeg give dig point - indtil videre har du været en stor hjælp.
tak
Avatar billede 0xffff Nybegynder
28. maj 2007 - 16:34 #3
Det er vigtigt at du skelner imellem databasesystemet og den pågældende database. MySQL er et relationelt databasesystem, men derfor behøver du som bruger ikke at benytte dig af det.

Relationel beskæftiger sig kun med om det fysiske databasesystem har *mulighed* for at kunne beskrive relationer. RMBMS systemer er beskrevet som værende ethvert system hvor systemet har mulighed for at ethvert af systemets objekter kan være brugt i mere end en tabel.
Avatar billede arne_v Ekspert
28. maj 2007 - 16:36 #4
Du kan også se tabel type i PHPMyAdmin.

Redundans af data er altid skidt set fra en relationel synsvinkel. Men det er svært at
sige noget konkret uden at kende din tabel struktur.

(jeg antager at du mener tabel når du skriver database)

Jeg skal ligge et svar for at du kan give point.
Avatar billede hasph Nybegynder
28. maj 2007 - 17:09 #5
For god ordens skyld lægger jeg lige et sql dump af min database - og ja, du har ret.

Jeg mente selvfølgelig tabel og ikke database - når abstraktionsniveauet i noget nyt bliver for stort risikerer jeg at lave fortalelser.

Hvis du har tid må du gerne kigge på nedenstående og give en sidste kommentar.
Ihvertfald tildeler jeg dig de point som du fortjener!

Mange tak for afklaringen!

hasph

-- phpMyAdmin SQL Dump
-- version 2.10.0.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: May 28, 2007 at 12:36 AM
-- Server version: 5.0.37
-- PHP Version: 5.2.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `database`
--

-- --------------------------------------------------------

--
-- Table structure for table `billeder`
--

CREATE TABLE `billeder` (
  `billedid` int(255) NOT NULL auto_increment,
  `billednavn` varchar(255) NOT NULL,
  PRIMARY KEY  (`billedid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

--
-- Dumping data for table `billeder`
--

INSERT INTO `billeder` (`billedid`, `billednavn`) VALUES
(1, 'logo.jpg'),
(5, 'cphCityline.jpg'),
(4, '2-consultant.jpg'),
(6, '2-consultant.jpg'),
(7, 'doctor_cigarette_2.jpg'),
(8, 'doctor_cigarette_2.jpg'),
(9, 'blabla.jpg');

-- --------------------------------------------------------

--
-- Table structure for table `brugere`
--

CREATE TABLE `brugere` (
  `id` int(255) NOT NULL auto_increment,
  `brugernavn` varchar(255) NOT NULL,
  `adgangskode` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Dumping data for table `brugere`
--

INSERT INTO `brugere` (`id`, `brugernavn`, `adgangskode`) VALUES
(1, 'blue', 'monday');

-- --------------------------------------------------------

--
-- Table structure for table `sideindhold`
--

CREATE TABLE `sideindhold` (
  `id` int(10) NOT NULL auto_increment,
  `overskrift` varchar(100) NOT NULL,
  `tekst1` text NOT NULL,
  `billede` varchar(100) NOT NULL,
  `tekst2` text,
  `navn` varchar(255) default NULL,
  `mainid` int(10) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=35 ;

--
-- Dumping data for table `sideindhold`
--

INSERT INTO `sideindhold` (`id`, `overskrift`, `tekst1`, `billede`, `tekst2`, `navn`, `mainid`) VALUES
(1, hej', NULL, NULL),
(2, 'Php', 'PHP Expert Editor is a tool for writing, editing, and debugging PHP scripts an\r\nd HTML pages. It has internal\r\n browser, Debugger, Code Explore\r\nr, File Explorer, a built-in FTP client, Project Explorer, customizable Code Templates, etc.PHP Expert Editor is a tool for writing, editing, and debugging PHP scripts and HTML pages. It has internal browser, Debugger, Code Explorer, File Explorer, a built-in FTP client, Project Explorer, customizable Code Templates, etc.PHP Expert Editor is a tool for writing, editing, and debugging PHP scripts and HTML pages. It has internal browser, Debugger, Code Explorer, File Explorer, a built-in FTP client, Project Explorer, customizable Code Templates, etc.PHP Expert Editor is a tool for writing, editing, and debugging PHP scripts and HTML pages. It has internal browser, Debugger, Code Explorer, File Explorer, a built-in FTP client, Project Explorer, customizable Code Templates, etc.', 'cphCityline.jpg', 'tekst side 2', NULL, NULL),
(3, 'PHP2', 'tekst side 3', '2-consultant.jpg', 'tekst side 3', NULL, NULL),
(4, 'Referencer2', 'tekst side 4', '', 'tekst side 4', NULL, NULL),
(5, 'Priser', 'tekst','', 'tekst side 5', NULL, NULL),
(6, 'Lokaliteter', 'tekst side 6', 'billede side 6', 'tekst side 6', NULL, NULL),
(7, 'Site Online', 'tekst', NULL, NULL),
(8, 'Kontakt', 'tekst side 8\r\n\r\nhej', 'billede side 8', 'tekst side 8', NULL, NULL),
(24, 'Kontakt', 'tekst side 8\r\n\r\nhej', '632697073071117731.jpg', 'tekst side 8', 'Kontakt undermenu', NULL),
(28, '(diverse test etc.)', 'Formål,effekt,opnådet effekt. principper', ' ', NULL, 'Scenarier', 2),
(29, '(fotograf, tjener, etc)', 'Det anderledes arrangement, det uventede.', ' ', NULL, 'Scenarier', 3),
(30, 'Udtalelser, refferencer', 'Udtalelser, refferencer', ' ', NULL, 'Diverse', 4),
(31, 'Forklaring', 'Forklaring', ' ', NULL, 'Tillægspriser', 5),
(32, 'undermenu', 'billed', 'doctor_cigarette_2.jpg', 'weeee', '....', 1),
(33, 'mariannes undermeny', 'meny er bare smart', 'logo.jpg', 'og et logo', ' Undermenu', 1),
(34, 'FEDT CHAT PROGRAM', 'HVOR ER ALLE HENNE???', 'doctor_cigarette_2.jpg', NULL, '', 1);
Avatar billede hasph Nybegynder
28. maj 2007 - 17:11 #6
Iøvrigt bedes du se bort fra indholdet i atributterne - disse er blot midlertidige for at teste funktionaliteten.

Vh

hasph
Avatar billede hasph Nybegynder
28. maj 2007 - 17:31 #7
hej arne_v
Jeg har accepteret dit svar flere gange for at tildele dig poing.
Men har ikke fået nogen bekræftigelse på at du har modtaget dem...
Accepter og Afvis knapper fremgår stadig ud for dit navn.
Jeg skriver bare dette for at sikre mig at du får de point som er sat på højkant.

VH

hasph
Avatar billede arne_v Ekspert
28. maj 2007 - 19:27 #8
Jeg ville bare bruge int hvis du vil have bredde på så int(11) men ikke int(255).

255 er også ret langt for brugernavn og password.

Et unikt index på brugernavn var nok en god ting.
Avatar billede arne_v Ekspert
28. maj 2007 - 19:28 #9
Tricket er at man markerer navnet ude i combo boxen så det bliver blåt inden du
klikker accepter.
Avatar billede hasph Nybegynder
28. maj 2007 - 19:33 #10
sådan... så skulle pointne være tildelt.
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