Mysql workbench, normaliseren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end developer (Vue.js) gezocht!

Functie Als Front-end developer is het jouw doel om efficiënte en effectieve frontend code te ontwerpen, ontwikkelen en onderhouden die goed aansluit bij de functionele behoefte vanuit de klant. Je zorgt voor optimale SEO-resultaten, sitespeed en frontend security. You build it, you run it, you own it! Je maakt deel uit van een DevOps Scrum team en werkt samen met back-end developers, test-engineers, interaction designers en een projectmanager. Er zijn verschillende groepen Scrum teams. Een roadmap team is jouw ‘’thuisbasis’’, daar wordt gewerkt aan doorontwikkeling van bestaande omgevingen voor een aantal klanten. Hiernaast zijn er projectteams waar nieuwe omgevingen worden

Bekijk vacature »

Senior Cobol Applicatieontwikkelaar

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving In de applicatie ETM

Bekijk vacature »

PHP Developer

Functie omschrijving Voor een bedrijf in Den Bosch zoek ik een PHP Developer, die al wat werkervaring heeft. Jij gaat aan de slag met de verdere professionalisering van de interne applicaties en software. In de functie ga je verder: Verdere ontwikkeling eigen CRM systeem, vooral middels PHP; Bouwen van verschillende API's & koppelingen; Meedenken om de software/applicaties te verbeteren/optimaliseren; Aan de slag met de interne tooling. Bedrijfsprofiel Dit bedrijf is actief binnen de telecombranche. Het hoofdkantoor zit in regio van Den Bosch en er werken ruim 70 medewerkers, verdeeld over verschillende afdelingen. De afdeling Development bestaat uit vijf collega's, onder

Bekijk vacature »

Junior Front-End Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale oplossingen van Coolblue. Wat doe je als Junior Front-End Developer bij Coolblue? Als Junior Front-End Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen. Op dat moment komt je wil om te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te maken. Je sterk analytisch vermogen komt dan goed van pas! Ook Junior Front-End Developer worden bij Coolblue?

Bekijk vacature »

.NET Developer

Dit ga je doen (Door)Ontwikkelen van het applicatielandschap; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het applicatielandschap; Sparren met de business. Hier ga je werken De organisatie is werkzaam in de financiële dienstverlening met meer dan 200 medewerkers en meer dan 250.000 eindgebruikers is het een van de grotere binnen haar branche. Je komt te werken in een team waarmee je verantwoordelijk bent voor het ontwikkelen en onderhouden van de financiële applicaties binnen de organisatie, denk hierbij aan het bouwen en onderhouden van portalen. Als .net developer ga jij het development team ondersteunen met de transitie naar

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

Junior PHP (Laravel) Developer

Functie omschrijving Wij zijn op zoek naar een PHP Laravel Developer! Sta je aan het begin van je carrière en ben je op zoek naar een leuke baan? Lees dan verder! Voor een softwarebedrijf in omgeving van Schiphol zijn wij op zoek naar een ervaren PHP (Laravel) Developer. Je gaat je bezighouden met het ontwikkelen van innovatieve bedrijfsapplicaties. Samen met het team, bestaande uit designers en developers, maak je mooie oplossingen voor bedrijven in diverse branches. Je zorgt dat de opgeleverde websites perfect werken en de klant meer dan tevreden is. Je kunt rekenen op een afwisselende baan met leuke

Bekijk vacature »

C#.NET developer

Functieomschrijving Wij zijn op zoek naar een gepassioneerde Full Stack C#.NET Software Developer. Als Software Developer ben je verantwoordelijk voor het ontwikkelen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere ontwikkelaars en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Testen en valideren van de ontwikkelde software. Ontwikkelen en onderhouden van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je gaat aan de slag met diverse technologieën en frameworks. Denk hierbij aan C#, JS frameworks, HTML, CSS, TypeScript,

Bekijk vacature »

SQL developer

Functieomschrijving Voor een erkende werkgever in de omgeving van Tilburg zijn wij op zoek naar een ervaren SQL ontwikkelaar. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt er als volgt uit te zien: Het ontwerpen en implementeren van databaseschema's: Je bent in staat om een database te ontwerpen en de structuur van tabellen, relaties, indexen en andere objecten te definiëren; Het schrijven van complexe SQL-query's: Je kunt complexe query's schrijven om gegevens uit de database

Bekijk vacature »

Full stack developer Python, React

Functie Jij als full stack developer komt binnen onze Technology afdeling te werken. Deze bestaat momenteel uit 15 man. De stack waarmee wij werken is voornamelijk Python, Javascript, React en GraphQL. Binnen deze afdeling wordt er met multidisciplinaire teams gewerkt aan verschillende projecten. Projecten duren vaak langer dan 3 maanden en je bent van begin tot eind vaak betrokken. Naast dat je als full stack ontwikkelaar aan de slag gaat ben je ook Consultant. Dit betekent dat je ook klantcontact hebt in je rol en werkshops geeft. De verhouding tussen deze werkzaamheden zijn ongeveer 70% development en 30% consultancy. Een

Bekijk vacature »

TypeScript developer (tot € 6.000, - bruto pe

Functie Om bovenstaande ambities waar te kunnen maken zijn ze op zoek naar een ervaren Typecript developer die niet alleen zichzelf verder ontwikkelt, maar het ook leuk vinden om op termijn meer junior collega’s op pad te helpen. Je zult aan de slag gaan met het migreren van hun bestaande UI in Angular. Maar ook het ontwikkelen van een mobiele app. Hierbij hechten ze veel waarde aan User Experience en kiezen ze duidelijk voor kwaliteit i.p.v. snelheid. Je krijgt dus de ruimte om vanuit gedegen onderzoek te werk te gaan en het borgen van kwaliteit staat hoog in het vaandel.

Bekijk vacature »

Front-end developer E-Commere

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als front-end developer heb je een adviserende rol en sta je aan het eindpunt van alles wat met designs te maken heeft. Je overlegt met klanten en collega’s, en zet je in om ideeen om te zetten tot unieke concepten. Je bent het aanspreekpunt voor de klant en bewaakt tevens de planning. Eisen

Bekijk vacature »

Lead C++ Developer

The role of Lead C++ Developer As Lead C++ Developer at KUBUS you will be responsible for the implementation design of requirements and the software architecture of the desktop applications of BIMcollab, our platform for 3D model validation and issue management aimed at improving the quality of 3D building design models. Better 3D models lead to better buildings, thus contributing to the sustainability of the built environment with smarter use of materials, less waste and energy-efficient buildings. A good user experience is of paramount importance to us; we go for innovation and quality in our development. In your role as

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

PHP developer - Digital Agency

Functie Het team telt momenteel 20 collega’s, bestaande uit developers (front- en backend) en het operations team, waaronder ook het management en twee scrum masters vallen. Ze zijn op zoek naar een PHP developer die in staat is zelfstandig te werken. Je komt te werken in één van de drie scrumteams en gaat aan de slag met een project voor de klant. Het fijne hieraan is dat je wel afwisseling hebt qua werk, maar tegelijkertijd doorlopend werkt voor bestaande klanten. Hierdoor krijg je ook de kans om echt de diepte in te gaan en innovatieve technische oplossingen neer te zetten.

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

05/11/2024 14:49:19
 
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.