Mysql workbench, normaliseren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Low Code Ontwikkelaar

In het kort Als Low Code Developer werk je aan projecten bij en voor onze klanten, waarbij je voor het ontwikkelen van de oplossingen een technisch low-code platform gebruikt. Samen met het team streef je naar de beste oplossing en bepalen jullie de juiste aanpak. Je rol is divers en je bent van begin tot eind betrokken bij de ontwikkeling zowel de back-end en de front-end van de applicatie. Naast de ontwikkeling en oplevering, breng je ook advies uit aan de klant waarom bepaalde keuzes worden gemaakt. Je bent dan ook communicatief sterk en kunt je keuzes goed (inhoudelijk) onderbouwen.

Bekijk vacature »

Experienced Lead Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Delft Vacature ID: 13301 Introductie We are seeking a Lead Java Developer for our team in the area of Delft. You will develop an application used exclusively by the engineers and geologists for site characterizations, which imports raw field and laboratory measurements for further processing, integration, ground modelling, and geotechnical analysis and reporting. The client/server application is entirely written in Java, and the server is hosted in the Amazon cloud, utilizing frameworks such as Spring and Hibernate, and connected to an MS SQL Server RDS instance. There is a trend towards using more

Bekijk vacature »

Fullstack Developer

Functieomschrijving Voor een erkende werkgever in regio Etten-Leur zijn wij op zoek naar een Fullstack Developer met PHP/Laravel ervaring. Je gaat aan de slag met het bouwen van maatwerk software voor klanten die actief zijn in een specifieke markt. Als fullstack developer ben je samen met een enthousiast team van 7 collega’s verantwoordelijk voor de ontwikkeling, beheer en innovatie van informatiesystemen voor klanten in een specifieke branche. Verder ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Ervaring met Laravel is een must. Om de klant zo goed mogelijk te

Bekijk vacature »

Software Developer PHP

Functie omschrijving We are looking for a dutch native speaker Voor een opdrachtgever in de regio van Geldrop ben ik op zoek naar een Software Developer PHP. Jij krijgt een rol met veel verantwoordelijkheid in een groeiende organisatie. In deze functie werkt je voornamelijk remote en op een vast moment kom je met het team samen, om samen te werken en nieuwe doelen te bepalen. Wat ga je doen? Je wordt verantwoordelijk voor de interne applicatie; Je zorgt voor de doorontwikkeling van de applicatie: zowel back-end, front-end; De basis van het werk betreft front-end technieken; Periodiek bepaal je samen met

Bekijk vacature »

Medior/senior Back-end developer gezocht!

Functie Vanwege de groei binnen het bedrijf zijn we op zoek naar versterking in het devlopmenttean. Als back-end developer bouw je aan de bedrijfssoftware die ons helpt bij de primaire processen. Een leuk (intern) project dus waarbij je de software continu doorontwikkeld! Je werkt in een klein team, we hebben dagelijks stand-ups en iedere twee weken een scrum-sessie, begeleid door onze Scrum Master. Hierin krijg je uitgebreid de kans om je ideeën te presenteren, en te overleggen met je mede-ontwikkelaars en de Product Owner. Binnen de ontwikkelteams gebruiken we Trello, Gitlab, Jiira, Confluence en Boockstack. Hiernaast werken ze met de

Bekijk vacature »

Back End Developer .NET

Dit ga je doen Ontwikkelen in C# .NET en werken aan nieuwbouw, uitbouw en onderhoud van de software (die communiceren met 68.000 sensoren, waardoor er meerdere miljoenen berichten per uur verwerkt worden); Samenwerken in Scrum Teams; Meewerken aan verschillende, uitdagende projecten; Werken met nieuwe technologieën en vrijheid krijgen om jezelf te ontwikkelen en door te groeien. Hier ga je werken Je komt als Developer te werken bij een organisatie die gespecialiseerd is in software die real-time wordt gebruikt. De software constateert waar werk moet worden uitgevoerd en de chauffeurs worden met een andere applicatie hierop geattendeerd. Ook wordt er direct

Bekijk vacature »

SQL Database Ontwikkelaar

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je houdt je bezig met het ontwerp en de ontwikkeling van MS SQL server databases, dit doe je met T-SQL als programmeer laag. De begeleiding van projecten van A tot Z, je zult aansluiten bij meetings met

Bekijk vacature »

Front-end Developer

Functie omschrijving Gezocht front-end developer! Voor een toffe organisatie in de regio Rhenen zij wij op zoek naar een front-end developer die de eindverantwoordelijkheid op zich neemt van alles wat met design te maken heeft. In deze functie heb je een adviserende rol en beschik je over een grote dosis vakinhoudelijke kennis. Samen met collega’s en klanten overleg je om aangeleverde designs om te zetten naar unieke concepten. Zo draag jij je steentje bij aan de groeiambities van de klant. Voor klanten wordt jij het vaste aanspreekpunt als het gaat over planningen hierin houdt je alle betrokkenen goed op de

Bekijk vacature »

Software Ontwikkelaar C# .NET

Functie omschrijving Startende Software Ontwikkelaar gezocht met kennis van C# .NET! Ben jij net klaar met je opleiding en ben je op zoek naar je eerste echte werkervaring? Of heb jij al enige werkervaring maar ben toe aan iets nieuws? Dan is dit de perfecte kans voor jou! Wij zoeken namelijk een Junior Software Ontwikkelaar die klaar is voor een nieuwe uitdaging bij een leuke werkgeven in de regio Zeist. In deze functie werk jij vaak aan verschillende projecten en ga je bij klanten op bezoek. Ben jij op zoek naar een functie met uitdaging, diversiteit en verantwoordelijkheid? Dan is

Bekijk vacature »

PHP Developer

Dit ga je doen Je werkt nauw samen met het websitebureau aan de ontwikkeling en optimalisering van het internationale platform; Je ziet nieuwe webshops op en voert optimalisaties door; Je bouwt aan technische, functioneel en commercial resultaat; Je vindt het leuk om zelfstandig binnen een internationale organisatie te werken, maar krijgt ook energie om samen met collega's te werken. Hier ga je werken Voor een bedrijf in de regio Rotterdam zijn wij opzoek naar een PHP Developer. Je wordt onderdeel van het communicatieteam en gaat je bezighouden met het optimaliseren van de website van dit internationale bedrijf. Je schakelt veel

Bekijk vacature »

Software Developer PHP JavaScript Python HBO SQL

Samengevat: Wij zijn een softwarebedrijf voor Autodealers. Ben jij een Medior of Senior Software Developer? Heb je ervaring met PHP, JavaScript of Python? Vaste baan: Java.Developer Software HBO €3.000 - €5.200 Bij ons op de werkvloer is er een positieve en informele sfeer. Naast een goede begeleiding en een enthousiaste klantenkring biedt deze werkgever een prettige omgeving met zeer afwisselende werkzaamheden. Houd jij van aanpakken en denk je dat je deze uitdaging aankunt? Dan zoeken wij jou! Zij werken voor grote klanten. Zij doen omvangrijke projecten die we bij deze werkgever op kantoor realiseren (geen detachering). Zij werken met state-of-the-art

Bekijk vacature »

Backend Developer Integraties API HBO REST

Samengevat: Deze werkgever is een IT-consultancy. Wil jij werken als Backend Developer Integraties? Heb jij kennis van gangbare berichtformaten? Vaste baan: Backend Developer Integraties API HBO €3.100 - €4.400 Zij bieden innovatieve oplossingen die bedrijven efficiënter en wendbaarder maken, waardoor onze klanten zich net zo snel kunnen ontwikkelen als de business van hen vraagt. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Deze werkgever staat open voor elke nieuwe trend. Onze systemen zijn groot en ingewikkeld. Hou jij van diepgang

Bekijk vacature »

.NET developer

Functie Als .NET ontwikkelaar ga jij aan de slag bij een van onze klanten actief in de High Tech Industrie. Onze klanten zijn voornamelijk gelokaliseerd in de omgeving van Eindhoven. Wij zijn erg selectief als het gaat om de projecten die wij accepteren en richten ons dan ook alleen op innovatieve en complexe projecten. Omdat onze klanten voornamelijk gespecialiseerd zijn in de machinebouw, werk jij ook vaak dicht tegen de machines aan. Ons team bestaat momenteel uit Embedded engineers, IOT developers en Cloud engineers. Wij werken voornamelijk aan Microsoft projecten waar er gebruik wordt gemaakt van WPF, UWP, .NET Core

Bekijk vacature »

Software Developer C# .NET

Functie omschrijving Software Developer C# .NET gezocht voor een dynamische organisatie! Ben jij net afgestudeerd of toe aan een volgende stap in je maatschappelijke carrière? Lees dan snel verder! Wij zijn op zoek naar een Software Developer die klaar is voor een nieuwe uitdaging en die een organisatie in de regio Houten wil versterken. Je werkt in deze functie aan verschillende projecten en gaat vaak op bezoek bij klanten. In deze functie kun je een grote mate van uitdaging, diversiteit en verantwoordelijkheid verwachten. Bedrijfsprofiel Waar kom je te werken? Je komt te werken bij een organisatie dat gespecialiseerd is in

Bekijk vacature »

PHP Developer

Functie Middels Scrum en sprints bouw jij in deze functie mee aan complexe webapplicaties en ons SaaS platform. Hierbij hoort ook architectuur tot een van je taken. Daarnaast ben je één van de leden van het Scrum team. Dat betekent dat je naast je kerntaken ook in contact staat met de product owner. Oftewel, je bent bij het gehele ontwikkelproces betrokken. Tools die hierbij gebruikt worden zijn o.a. PHP, Symfony en Git. Eisen • Minimaal HBO werk- en denkniveau • Minimaal 3 jaar aantoonbare ervaring met PHP • Kennis en ervaring Symfony (Laravel is pré) & Lando • Kennis van

Bekijk vacature »

Pagina: 1 2 volgende »

E vH

E vH

12/01/2015 15:22:46
Quote Anchor link
Goedemiddag allemaal.

Ik ben mij aan het inlezen over normalisatie en probeer nu het programma mysql workbench uit.

Op de Nederlandse pagina's krijg je veel verwijzingen naar het database ontwerp van Yapf en soms kom je een artikel op deze website tegen.

Op basis hiervan heb ik even een opzetje gemaakt( welke uiteraard niet af is), hieronder de code zoals ik hem terug krijg van het programma:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
-- MySQL Script generated by MySQL Workbench
-- 01/12/15 15:13:48
-- Model: New Model    Version: 1.0
-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`postcodes`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`postcodes` ;

CREATE TABLE IF NOT EXISTS `mydb`.`postcodes` (
  `postcodeID` INT NOT NULL,
  `postcode` VARCHAR(45) NOT NULL,
  `straatnaam` VARCHAR(45) NOT NULL,
  `plaats` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`postcodeID`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`adressen`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`adressen` ;

CREATE TABLE IF NOT EXISTS `mydb`.`adressen` (
  `adresID` INT NOT NULL,
  `postcodeID` INT NOT NULL,
  PRIMARY KEY (`adresID`),
  CONSTRAINT `postcodeID`
    FOREIGN KEY (`postcodeID`)
    REFERENCES `mydb`.`postcodes` (`postcodeID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`klanten`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`klanten` ;

CREATE TABLE IF NOT EXISTS `mydb`.`klanten` (
  `klantID` INT NOT NULL AUTO_INCREMENT,
  `voornaam` VARCHAR(45) NOT NULL,
  `tussenvoegsel` VARCHAR(45) NOT NULL,
  `achternaam` VARCHAR(45) NOT NULL,
  `adresID` INT NOT NULL,
  `huisnummer` VARCHAR(45) NOT NULL,
  `huisnummer_toevoeging` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`klantID`),
  INDEX `adresID_idx` (`adresID` ASC),
  CONSTRAINT `adresID`
    FOREIGN KEY (`adresID`)
    REFERENCES `mydb`.`adressen` (`adresID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`artikelen`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`artikelen` ;

CREATE TABLE IF NOT EXISTS `mydb`.`artikelen` (
  `artikelID` INT NOT NULL AUTO_INCREMENT,
  `artikelnaam` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`artikelID`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`orders`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`orders` ;

CREATE TABLE IF NOT EXISTS `mydb`.`orders` (
  `orderID` INT NOT NULL AUTO_INCREMENT,
  `artikelID` INT NOT NULL,
  `klantID` INT NOT NULL,
  `aantal` DECIMAL(10,0) NOT NULL,
  `prijs` DECIMAL(5,2) NOT NULL,
  PRIMARY KEY (`orderID`),
  INDEX `klantenID_idx` (`klantID` ASC),
  INDEX `artikelID_idx` (`artikelID` ASC),
  CONSTRAINT `klantenID`
    FOREIGN KEY (`klantID`)
    REFERENCES `mydb`.`klanten` (`klantID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `artikelID`
    FOREIGN KEY (`artikelID`)
    REFERENCES `mydb`.`artikelen` (`artikelID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;


Dit geeft mij de volgende diagram:

Afbeelding

Ik weet dat het niet geoptimaliseerd is, maar ik ben niet bekend met de kleurtjes en kraaienpootjes en op YAPF missen er afbeeldingen.

Ik zou denken dat ik goed op weg ben, kan er iemand een blik op werken?

ps: varchar 45 is een standaard waarde in de workbench, het gaat mij om het diagram en de opzet er van.
Gewijzigd op 12/01/2015 15:23:47 door E vH
 
PHP hulp

PHP hulp

18/02/2025 22:55:05
 
Ward van der Put
Moderator

Ward van der Put

12/01/2015 15:48:26
Quote Anchor link
Adressen normaliseren is een drama, laten we dat vooropstellen.

Als je echter een adres-ID alleen koppelt aan een postcode-ID, dan kan die tabel er ook uit.
Per klant sla je dan postcode-ID (in plaats van adres-ID) plus huisnummmer en huisnummertoevoeging op.

Als je per order meerdere artikelen wilt leveren, heb je daarvoor nog een extra tabel nodig.
Gewijzigd op 12/01/2015 15:48:47 door Ward van der Put
 
Henk de Vriep

Henk de Vriep

12/01/2015 15:57:53
Quote Anchor link
Ten eerste: Ik zou altijd proberen de database zo veel mogelijk in het engels te houden als je die taal goed spreekt. Makkelijker als je een keer iets wilt vragen op een engels forum of internationaal gaat met je applicatie. Maar dit is ook een kwestie van persoonlijke voorkeur.

Ten tweede: Addressen normaliseren is inderdaad een ramp. Zelf sla ik al niet meer op dan een postcode en een huisnummer. Deze kun je dan online tegen een database aanhouden of je kunt een postcode database kopen. Als je dit niet doet kun je prima de postcode, huisnummer en plaatsnaam in de klantentabel opslaan (correct me if i'm wrong)

Tips:

Maak een orderregels tabel zet in deze tabel het orderID. Op deze manier kunt je meerdere artikelen aan een order toevoegen. Zet de prijs van de orderregel wel vast in die tabel en laat die niet uit artikelen komen. Zodra de prijs veranderd wil je niet dat de prijs van de order die een tijdje geleden geplaatst hebt veranderd.

Verder, keep up de good work :)
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/01/2015 16:45:42
Quote Anchor link
De kraaienpootjes geven de cardinality van de relatie aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
->0 nul of meer
->| n of meer
-|| n en alleen maar n
-|0 n of nul
 
E vH

E vH

12/01/2015 16:51:27
Quote Anchor link
Thanks voor de reacties!

Het ging mij niet zozeer om de tabellen, maar om de opzet van de diagram.

Voorbeeldje iets aangepast op basis van jullie reacties:

Afbeelding

Of hoort het zo te zijn ( gelet op de lijntjes en kraaienpootjes en kleurtjes )?

Afbeelding
Gewijzigd op 12/01/2015 16:53:37 door E vH
 
John D

John D

12/01/2015 17:38:46
Quote Anchor link
De tabel orders niet als koppeltabel gebruiken maar als "kopregel" voor orderregels. In orders neem je wel het klant id op maar ook de (factuur)datum, naam van degene die besteld heeft, en andere handige gegevens die eenmaal bij een order/factuur horen.
 
Ozzie PHP

Ozzie PHP

12/01/2015 17:43:24
Quote Anchor link
Offtopic:

Ziet er mooi uit zo'n diagram, maar ik ben wel benieuwd of iedereen hier eerst zo'n chique diagram maakt, of gewoon even simpelweg een opzetje op papier krabbelt?
 
E vH

E vH

12/01/2015 17:44:26
Quote Anchor link
Wat bedoel je met "kopregel"?

Ik weet dat er dingen ontbreken en ook uitgebreid kunnen worden, het betreft de opzet van de diagram.

Welke situatie is nou fout? afbeelding 1 of 2 (hierboven weergegeven ).


Edit:
>>> Ziet er mooi uit zo'n diagram, maar ik ben wel benieuwd of iedereen hier eerst zo'n chique diagram maakt, of gewoon even simpelweg een opzetje op papier krabbelt?

Ik krabbel op papier en begin ergens.

Ik heb een bestaande structuur welke ik bijna 1 op 1 over kan nemen en kan verbeteren, alleen ik heb de PK's en FK's etc nooit doorgevoerd...
Dus ik wilde het eens "anders" doen.

Met zo'n diagram krijg je toch wel een bepaalde database inzicht, lijkt me ergens wel handiger dan op papier... scheelt veel denk werk ;-)
Gewijzigd op 12/01/2015 17:49:05 door E vH
 
Ozzie PHP

Ozzie PHP

12/01/2015 17:48:57
Quote Anchor link
>> Een diagram is niet echt belangrijk, maar geeft je wel in 1x inzicht in je database structuur, leek mij erg handig aangezien ik best veel tabellen heb ...

Nou, t ziet er mooi uit hoor :-)

Toevoeging op 12/01/2015 17:54:14:

>> Met zo'n diagram krijg je toch wel een bepaalde database inzicht, lijkt me ergens wel handiger dan op papier... scheelt veel denk werk ;-)

Maar dat moet je toch allemaal "uittekenen"? Dat lijkt me nog veel meer werk :)
 
E vH

E vH

12/01/2015 18:07:16
Quote Anchor link
Het vullen van zo'n tabelletje is seconden werk als je snapt hoe een tabel word opgebouwd ( voordeel is ook dat je SQL kunt importeren en exporteren).

(van PK's en FK's heb ik kaas gegeten en dan de "symbolen" begrijpen is ook weer iets wat je moet "snappen".)
Op zich is het een mooi programma, simpel, althans, zo komt het over.
Als je dit snapt, dan is het ook seconden werk om aan te passen, schrijven op papier duurt langer.

Vandaar de vraag of iemand mij kon vertellen of ik goed bezig was, los van de inhoud ;-)

Ik neem aan dat dit een foute manier is ( stel dat ik alle orders van een klant wil ophalen ):
Afbeelding
Gewijzigd op 12/01/2015 18:08:08 door E vH
 
Ozzie PHP

Ozzie PHP

12/01/2015 18:10:35
Quote Anchor link
Maar tekent dat programma alles zelf? Of moet je die lijnen en posities zelf bepalen en tekenen?
 
E vH

E vH

12/01/2015 18:13:50
Quote Anchor link
Gaat vanzelf.
Dat is het mooie er nou van ;-)

Vandaar ook dat ik wil weten of ik goed op weg ben.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/01/2015 18:52:37
Quote Anchor link
Je kan geen twee relaties tussen twee tabellen hebben, dit impliceert een n-n relatie en dan heb je altijd een extra tabel nodig.

orderID in tabel orders zou de PK moeten zijn.

In orderregels is de (nep)sleutel regelID niet nodig. Je maakt van de combinatie orderID, artikelID de primary key. Je zal dan zien dat tussen orderregels en de tabellen orders en artikelen doorgetrokken lijntjes ontstaan.

Dat is het verschil tussen identifying en non-identifying. Identifying wil zeggen dat de FK in de child tabel deel uit maakt van de primary key.
 
Ozzie PHP

Ozzie PHP

12/01/2015 21:03:05
Quote Anchor link
>> Je maakt van de combinatie orderID, artikelID de primary key.

Ger, hoe werkt dit precies? Twee velden, maar één PK? Hoe gebruik je die PK dan in een select query?
 
Ward van der Put
Moderator

Ward van der Put

12/01/2015 21:19:05
Quote Anchor link
Verzamelingenleer Ozzie: als je order x en artikel y hebt, is één orderregel uniek dankzij de vereniging {x,y}.
Daar heb je een samengestelde sleutel voor nodig: x en y alleen zijn ieder voor zich niet uniek, want één order (x) kan meerdere artikelen bevatten en één artikel (y) kan voorkomen in meerdere orders.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/01/2015 21:37:54
Quote Anchor link
>> Ger, hoe werkt dit precies? Twee velden, maar één PK? Hoe gebruik je die PK dan in een select query?

Eigenlijk nooit in een select query, daarom is een pseudo key ook overbodig.
 
Ozzie PHP

Ozzie PHP

12/01/2015 22:13:58
Quote Anchor link
>> als je order x en artikel y hebt, is één orderregel uniek dankzij de vereniging {x,y}.

Ja, dat begrijp ik ...

>> Eigenlijk nooit in een select query, daarom is een pseudo key ook overbodig.

Oké, maar stel dat je die orderregel wilt verwijderen? Misschien moet ik de vraag anders stellen. Als je van 2 velden ('abc' en 'def') één PK maakt, ontstaat er dan daadwerkelijk een nieuw PK-veld 'abcdef'?
 
Ward van der Put
Moderator

Ward van der Put

13/01/2015 07:24:03
Quote Anchor link
Dan blijven het twee sleutels maar vormen die één index.

Het punt bij een n : m-relatie is dat je altijd beide sleutels nodig hebt om één specifieke rij te vinden. Gebruik je slechts één sleutel, dan krijg je meerdere rijen: bij het ordernummer alle artikelen in die order en bij een artikelnummer alle orders met daarin dat ene artikel.
 
E vH

E vH

13/01/2015 09:45:09
Quote Anchor link
Thanks voor alle input!

ps: @Ozzie, toevallig al wezen spelen met het programma? ;-)
 
Ward van der Put
Moderator

Ward van der Put

13/01/2015 09:54:36
Quote Anchor link
phpMyAdmin heeft een vergelijkbare designer.

Afbeelding
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

13/01/2015 11:04:21
Quote Anchor link
Ozzie PHP op 12/01/2015 22:13:58:
Oké, maar stel dat je die orderregel wilt verwijderen? Misschien moet ik de vraag anders stellen. Als je van 2 velden ('abc' en 'def') één PK maakt, ontstaat er dan daadwerkelijk een nieuw PK-veld 'abcdef'?

Één van de regels bij normalisatie:
Non key columns are dependent on the key, and nothing but the whole key (, so help me Codd).

In de orderregels tabel zijn alleen aantal en prijs de non-key kolommen, dus wordt niet aan die regel voldaan, dus zou je het artikelnummer en het ordernummer aan de PK op regelID moeten toevoegen. Maar dat is maar gewoon een nietszeggend nummer dus kan je die kolom net zo goed weglaten.

Als je dan een specifieke orderregel wilt verwijderen of bijwerken moet je dus het order_id en artikelnummer controleren.
Gewijzigd op 13/01/2015 11:05:07 door Ger van Steenderen
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.