Advies indeling database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back end developer Python, PHP

Functie Jij als full stack ontwikkelaar zult komen te werken samen met 1 PHP ontwikkelaar een PO en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult voornamelijk (lees 75%) werken aan de roostersoftware. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere flexwerkers ingezet kan worden. Verder willen ze financiële koppelingen gaan maken

Bekijk vacature »

Developer ERP

"Door digitalisering creëren wij een verantwoord woon- en werkklimaat, nu en in de toekomst - voor iedereen." Wil jij software maken die onze klanten het werk gemakkelijker maakt en wil jij jezelf continu blijven ontwikkelen? Haal jij energie uit het werken op internationaal niveau? Zoek jij jouw uitdaging binnen een professionele organisatie met een informele sfeer? Dan zijn wij op zoek naar jou! Ben jij ook op zoek naar Aareon? Developer ERP Ons aanbod Wat we jou bieden als developer binnen Aareon hebben we hieronder voor jou op een rijtje gezet. We bieden jou allereerst uitdaging en fijne collega’s. Daarnaast

Bekijk vacature »

Medior front-end developer gezocht (€3.300 -

Functie Wat ga je doen? Jij als front-end developer gaat werken binnen de teams van/voor onze klant. Je werkt in een team met starters en ervaren ontwikkelaars met allemaal 1 overeenkomst; passie voor het vak. Maak je een fout? Geen probleem, leer ervan en ga dan weer door. Door de variëteit aan werk kun je in verschillende omgevingen een kijkje nemen en jezelf dus snel ontwikkelen. Wat hebben we jou te bieden? • Uitdagende projecten bij mooie klanten (bij jou in de buurt, of binnenkort intern vanuit ons kantoor!) • Een jonge organisatie met talentvolle collega’s • Veel ruimte voor

Bekijk vacature »

Junior PHP Developer

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

Bekijk vacature »

Fullstack .NET/Vue Developer

Over de functie Start: zsm Aantal uren: 32-40 uur Duur: 6 maanden met optie op verlening Locatie: Amsterdam/Remote (100% remote mogelijk) In opdracht van één van onze klanten zijn we opzoek naar een Fullstack .NET & Vue.JS Developer. Je gaat werken aan een klantportaal en aan de datalake. Jouw werk gaat ervoor zorgen dat de organisatie meer data gedreven kan werken en dat het portaal naar het volgende niveau gaat! Jouw taken en verantwoordelijkheden: Het ontwikkelen en onderhouden van de Klantportaal Het ontwikkelen en de optimalisatie datalake Het ontwikkelen en onderhouden van API interfaces Het automatiseren van taken Afstemmen werkzaamheden

Bekijk vacature »

Lead Mendix Developer

Do you have passion for software development? Do you enjoy guiding and inspiring junior developers by sharing your knowledge? Is it your ambition to develop into a full stack developer? Then, this is your top job! You will be a part of our development team and work closely together with the other team members. We value our codebase’s readability, maintainability, and testability and look for someone who shares these values. With more than 100 companies in different product-market combinations, no day is the same at VDL. Your role: Help our company accelerate the delivery of real impactful changes through software

Bekijk vacature »

Java Developer / Back-end Developer / 5000 euro

Dit ga je doen Het ontwikkelen van applicaties en websites met behulp van Java en Spring; Werken aan lange termijn projecten; Oppakken van ad hoc activiteiten en processen; Nieuwe ontwikkelingen in de gaten houden en toepassen; Analytisch en kritisch meedenken over verbeteringen in tools en werkwijzen. Hier ga je werken Onze klant is een high traffic organisatie die kwaliteit en digitale transformatie hoog in het vaandel heeft staan. Het is een dynamische en autonome organisatie gevestigd in hartje Amsterdam. Het professionele team waar je in komt te werken is multidisciplinair. Het team werkt erg nauw samen en gebruiken gezamenlijk Scrum

Bekijk vacature »

Als Front-end developer (React) bijdragen aan de z

Functie Het front-end team bestaat uit 2 (medior) developers, momenteel zijn ze op zoek naar een medior of senior developer die dit team komt versterken. Hij of zij zal zich, samen met het team, vooral gaan bezighouden met vraagstukken rondom onderhoud, testen en doorontwikkeling. Zo komt er bijvoorbeeld een update aan m.b.t. het React framework welke zij graag willen doorvoeren. Hierin kiezen ze echt voor kwaliteit en krijg je dan ook de ruimte om zonder strakke deadlines hiermee aan de slag te gaan. Als Front-end developer binnen deze organisatie fungeer je echt als schakel tussen UX (Research) en back-end. De

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Senior Front-end developer (React)

Functie Met een ontwikkelafdeling van ruim 20 collega’s is dit zo ongeveer de helft van alle medewerkers. De software(ontwikkeling) is dan ook de drijvende kracht binnen de organisatie. Ze werken aan het verbeteren dan de bestaande, maar zeker ook nieuwe producten. De software bestaat uit verschillende (React) webapplicaties, maar ook een mobile (React native) app. Hierdoor kom je met verschillende uitdagingen in aanraking en is Mobile kennis natuurlijk mooi meegenomen. De software wordt door vele duizenden professionals dagelijks gebruikt en bevatten grote hoeveelheden data. Aan het team de uitdaging om hierin de best mogelijke gebruiksvriendelijkheid neer te zetten door gebruik

Bekijk vacature »

Junior/medior Back end developer PHP, Laravel

Functie Jij als ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor veel van je tijd je bezig houden met het ontwikkelen van maatwerk features en applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. Jij als full stack developer zult dus

Bekijk vacature »

Java Full Stack Developer

Java Full Stack developer What makes Cognizant a unique place to work? The combination of rapid growth and an international and innovative environment! This is creating a lot of opportunities for people like YOU — people with an entrepreneurial spirit who want to make a difference in this world. At Cognizant, together with your colleagues from all around the world, you will collaborate on creating solutions for the world's leading companies and help them become more flexible, more innovative and successful. And this is your chance to be part of the success story: we are looking for a Senior Java

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 3 april bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Technisch Ontwikkelaar

Wil jij verantwoordelijk zijn voor de ontwikkeling van diverse projecten? Wij zoeken voor een deze organisatie een Technisch Ontwikkelaar! Jij bent vanaf de eerste ontwerpfase tot en met de start van de bouw betrokken! Dit ontwikkelende bouwbedrijf is een vooruitstrevende organisatie dat zich richt op de nieuwbouw van woningen en appartementen. De projecten variëren daarbij vanaf een tiental woningen of appartementen tot ongeveer 100+ woningen, zowel vanuit een concept als de traditionele bouw. Bij deze organisatie staat duurzaamheid, innovatie en kwaliteit hoog in het vaandel. Omdat zij ervan overtuigd zijn dat deze drie pijlers leiden tot een tevreden afnemer. De

Bekijk vacature »

Software ontwikkelaar (medior/senior .net ontwikke

Over de functie In jouw rol zul je het team aanvullen met senioriteit en creativiteit. Naast de taken die bij de rol van ontwikkelaar horen zoeken we iemand die mee kan groeien en mensen mee kan nemen in ideeën en concepten. Omdat we erg groeiende zijn kun je mee groeien met de organisatie en binnen jouw rol. Nieuwe en web gebaseerde applicaties ontwerpen, bouwen, testen en implementeren Schone, toetsbare code schrijven met .NET, programmeertalen; C#, F# en/of Visual Basic (Bestaande) code beoordelen, herstructureren, debuggen en testen Systeemvereisten en (web)applicaties analyseren, indien nodig onderhoud plegen en upgraden Applicatiecodering, projectontwikkeling en operationele

Bekijk vacature »
Mark Hogeveen

Mark Hogeveen

31/10/2020 20:24:06
Quote Anchor link
Een voorraadbeheersysteem bevat producten. De producten kunnen heel verschillend zijn, en dus hun eigen attributen hebben.
Ik wil het EAV (Entity, Attribute, Value) model gaan gebruiken om de producten op te slaan.
EAV is een algemeen principe. Het betekent dat je een tabel hebt waar de producten in staan, met in deze tabel de kolommen voor waardes (attributen) die voor elk product zullen gelden. Zoals productnaam, beschrijving, prijs, BTW percentage, etc.
In een andere tabel worden attributen opgeslagen (globaal voor hele systeem).
Attributen kunnen zijn: gewicht, kleur, lengte, enzovoort. Dit zijn de attributen die nooit voor elk product zullen gelden, en dus specifiek zijn.
Dan is er nog een tabel die de attributen die in het systeem bestaan, koppelt aan elk product. De rijen in deze tabel bevat het product ID, het attribuut ID, en de waarde voor het attribuut.

Ik heb een schema gemaakt van mijn eerste opzet van de database indeling:

https://snipboard.io/I9oiRe.jpg

De oranje tabel kan voor elk product vaak meerdere rijen bevatten om het product met een attribuut en de waarde te koppelen.
De tabel 'product_attributes' bevat dus alle attributen die in het systeem voorkomen, als een soort register. Hier komen dus nooit dezelfde rijen in voor. In de praktijk zal deze tabel bijvoorbeeld zo'n 50 - 100 rijen bevatten.

Tweede manier
Nu was ik aan het denken: zou ik die oranje koppelingstabel niet kunnen weglaten, en die net genoemde ' product_attributes' tabel gewoon gebruiken om hierin direct per attribuut de waarde op te slaan? De tabel is dan geen 'register' meer, en kan dus heel veel rijen bevatten waarin dezelfde attribuutnaam en categorie ID staat.
Als ik dan toch nog een flat lijst als 'register' zou willen hebben (voor backend) om alle unieke attributen (attribuutnamen) op te halen die in het systeem voorkomen, dan gebruik in een query zoals:
SELECT DISTINCT name FROM product_attributes

De eerste manier (zoals in de afbeelding) is het meest gebruikelijk. De tweede manier heeft mogelijk het voordeel dat queries minder complex kunnen worden geschreven en dat eventuele JOIN queries minder tabellen hoeven aan te roepen (dus JOINs met waarin bijvoorbeeld 2 tabellen in voorkomen i.p.v. 3).
Maar tegelijkertijd lijkt die tweede manier me wel wat lelijk.

Zou de performance van de database veel worden verbeterd met de tweede manier? Of maak ik er zo alleen maar een rommeltje van?
Gewijzigd op 31/10/2020 20:26:11 door Mark Hogeveen
 
PHP hulp

PHP hulp

08/02/2023 15:27:45
 
Thomas van den Heuvel

Thomas van den Heuvel

31/10/2020 21:15:25
Quote Anchor link
Poep, was hier een antwoord aan het typen maar ben deze kwijt. Een korte samenvatting dan maar.

Wat in het bovenstaande nog ontbreekt is mogelijk het volgende:
- een entiteit voor "concrete" producten, oftewel een specifieke combinatie van product_attribute_values die tezamen een fysiek/tastbaar/concreet product vormen, weet niet of dat in het bovenstaande ontwerp wordt gevangen en/of dat van toepassing is op jouw situatie?
- een tabel voor de attributen (de attributen, dus niet de waarden) die deze ruimte opspannen om zo de concrete producten te voorzien van specifieke waarden (die je in eerste instantie gebruikt voor het vullen van de values voor de specifieke attributen en vervolgens voor het bouwen van de producten zelf)

Als je dan toch bezig bent met een generieke database zou ik het ook zo generiek mogelijk opzetten.

Om het bovenstaande misschien wat beter te illustreren zie een reactie van mij op een ander forum (en de reactie hier direct na, en nog wat kanttekeningen op de tweede pagina). Bekijk ook de afbeelding die hierbij zit die de verbanden illustreert.

Ik denk trouwens dat het voor performance weinig uitmaakt dat je twee of drie tabellen aan elkaar fietst, zolang dit maar via primary/foreign keys of indexen gebeurt. Je kunt altijd met EXPLAIN nagaan waarom een query traag is.

Overigens, je kunt de tabellen dan nog zo strak/generiek opzetten als je wilt, maar als je deze tabellen op de verkeerde manier vult dan kun je hier alsnog een potje van maken. Het is dus niet alleen de structuur die moet kloppen, maar de tabellen moeten ook op een zinnige manier gevuld/ingedeeld worden. Denk bijvoorbeeld aan "product overkoepelende attributen en attribuutwaarden" zoals bijvoorbeeld een schoenmaat. Je moet over verschillende producten soms dezelfde (gedeelde) attributen gebruiken om op die manier in de frontend (en wellicht ook in de backend) snel te kunnen zoeken/filteren, denk aan facetted searches enzo, ook dat staat (misschien wat kort door de bocht) toegelicht op dat andere forum, maar dit illustreert dus waarom een goede en slimme indeling super belangrijk is zodat je hier vervolgens makkelijker mee kunt zoeken want het wordt anders heel erg lastig om producten te vergelijken doordat je bijvoorbeeld het attribuut schoenmaat meerdere keren introduceert. Je bent dan namelijk letterlijk met meerdere maten aan het meten :).

Of je gooit deze producten gewoon in Magento ofzo :p.
Gewijzigd op 31/10/2020 21:27:03 door Thomas van den Heuvel
 



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.