Normalisatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc 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

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 »

Back-end .NET Developer

Functie omschrijving C# / .NET Developer gezocht voor een dynamische organisatie in de regio Houten! Voor een leuke organisatie in de regio Houten zijn wij op zoek naar een Back-end developer die klaar is voor een nieuwe uitdaging. In deze functie werk jij aan verschillende projecten en ga je vaak bij klanten op bezoek. Binnen deze functie kun je een grote mate van uitdaging, diversiteit en verantwoordelijkheid treffen. Bedrijfsprofiel Waar ga je werken? Het bedrijf waar je gaat werken is gespecialiseerd in het ontwerpen en implementeren van procesautomatisering en procesinformatisering. Zij doen dit onder andere voor de (petro)chemie, pharma, infra,

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »

Lead Java Developer

Dit ga je doen Je taken bestaan onder andere uit: Het aansturen van een development team bestaande uit 8 collega's op technisch maar ook HR gebied; Het maken van strategische keuzes omtrent de (nieuw)bouw van deze applicatie; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java, Spring, Angular, REST); Reviewen van code en feedback geven op collega developers. Hier ga je werken Als Lead Software Developer ben je verantwoordelijk voor één van de vier Agile Java ontwikkelteams die bouwen aan technologie die duizenden instanties wereldwijd verbindt. Dit Agile team, data Jira en Confluence gebruikt en

Bekijk vacature »

Laravel PHP developer in een jong team

Bedrijfsomschrijving Als je op zoek bent naar een werkplek waar plezier en uitdaging hand in hand gaan, dan is dit bedrijf de juiste keuze voor jou. Hier kun je werken aan uitdagende projecten en krijg je als developer veel verantwoordelijkheid. Het bedrijf waardeert kwaliteit boven kwantiteit en richt zich op het ontwikkelen van hoogwaardige applicaties en websites waar klanten enthousiast over zijn. Dit bedrijf is vooruitstrevend en streeft naar het leveren van de best mogelijke resultaten voor hun klanten. Als medior PHP ontwikkelaar met 3 jaar ervaring ben jij de persoon die we zoeken. Je krijgt hier de kans om

Bekijk vacature »

Database ontwikkelaar

Functieomschrijving Wil jij aan gave logistieke softwareprojecten werken en bij een uniek softwarebedrijf in de regio van Tilburg? Wacht niet langer en reageer snel op deze vacature. Als Database ontwikkelaar ga je aan de slag het schrijven van stored procedures en verder uitbouwen van de SQL database. Je werkt in een database team, met allemaal mensen die energie krijgen van software en techniek. Verder krijg je als taak: Optimaliseren en uitbouwen van de MS SQL databases die gebruikt worden; Optimaliseren van query's, waardoor er efficiënter gewerkt kan worden; Je werkt met de technieken T-SQL of PL/SQL; Bij interesse kan je

Bekijk vacature »

Full stack developer

Functie Binnen een ontzettend stimulerende werkomgeving kom jij te werken in een software team van 14 developers. Met ontzettend stimulerend bedoel ik een modern pand, wat voorzien is van alle nodige soft- en hardware, zodat jij jouw werk goed kan uitvoeren. Daarnaast zitten ze in een bos, waardoor je in een groene omgeving rustig kunt werken. Het team bestaat uit front end, back end en full stack developers. Jij krijgt dus de keuze hier waar jij jezelf het liefst op zou richten, maar de voorkeur gaat uit naar back end. Er wordt hier Scrum (agile) gewerkt in multidisciplinaire teams met

Bekijk vacature »

IT Manager team PaaS

TenneT is hard groeiende om haar ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Lead PaaS die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je wordt de Teammanager (Lead) van een nieuw team binnen de afdeling Basic van Information Technology and Facilities (ITF) van TenneT. Het team heet Platform as a Service. Hier wordt elke dag in een goede sfeer met zijn allen hard gewerkt om vanuit IT

Bekijk vacature »

Front-end Developer

Do you want to work with the latest technologies on the development of new systems and applications? Create elegant interfaces using VueJS for thousands of users? Get moving and strengthen Nederlandse Loterij as a Front-end Developer. Thanks to your efforts, our services are always presented in style. As a Front-end Developer you are responsible for website development and improving customer experience based on data analyze. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Front-end Developer you score by: Writing elegant, testable components without side-effects to provide functionality to the users Website development, adding

Bekijk vacature »

Back-End Web Developer

Als Back-End Web Developer bij Coolblue zorg je ervoor dat onze webshops elke dag een beetje beter zijn. Wat doe je als Back-End Web Developer bij Coolblue? Als Back-End Web Developer werk je met andere development teams samen om onze webshop zo optimaal mogelijk te laten werken en onze klanten blij te maken. Als backend developer weet je de weg in PHP, kan je in Typescript een microservice op zetten of ben je bereid om dit te leren. Ook Web Backend Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen PHP

Bekijk vacature »

Functioneel applicatiebeheerder - SOP-SYS-SAM

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Functioneel Applicatiebeheerder op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je gaat samenwerken in een team van circa 15 functioneel applicatiebeheerders en gaat onderdeel uitmaken van een DevOps team. Met dit team ga je applicaties (laten) ontwikkelen en beheren. Hierbij concentreer je je vooral op de functionele aspecten, zodat

Bekijk vacature »

Medior .NET Ontwikkelaar

In het kort Als .NET ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging graag met

Bekijk vacature »

Starter/junior PHP developer

Functie Momenteel zijn ze op zoek naar een junior PHP developer om het team te versterken. Als back-end developer bouw je de enterprise software die hun bedrijf helpt bij haar primaire processen. Afhankelijk van de omvang van het project werk je in een klein team aan een project. Ze hebben dagelijkse stand-ups en elke twee weken een scrumsessie, begeleid door de Scrum Master, waar je je ideeën kunt presenteren en samen met de Product Owner kunt werken aan het beste product. Ze vertrouwen enorm op hun eigen bedrijfssoftware. Dit geeft hun een groot voordeel ten opzichte van hun concurrentie. Zo

Bekijk vacature »

Front-end Developer

Dit ga je doen Het onderhouden, ontwikkelen en testen van front-end software van diverse klant- en medewerkersapplicaties; Het ontwikkelen van maatwerk front-end oplossingen in Vue.js en participeren in een scrumteam; Mede-verantwoordelijk voor het begeleiden en coachen van drie junior front-end developers; Verantwoordelijk voor code-reviews en het opstellen van de juiste documentatie zoals userstories en API ontwerp; Participeren in diverse projecten t.b.v. optimalisatie van diverse applicaties; Het opzetten van API koppelingen met externe applicaties. Hier ga je werken Betreffende organisatie is gevestigd in de regio van Swifterbant en is al ruim 20 jaar lang bedreven in het ontwikkelen en aanbieden van

Bekijk vacature »
Jan R

Jan R

17/06/2023 10:02:01
Quote Anchor link
Hi

Ik wil een "read-only" veld toevoegen op bepaalde tabellen.
Wat zou nu het beste zijn?
Een extra tabel die vermeld wat de status is en bij ontbreken een standaard gebruiken of
gewoon toevoegen als veld waarbij er altijd een status is; veldwaarde.

In andere gevallen zou ik dit niet vragen maar het gaat hier maar over 1 bool waarde per record. De tabel toevoegen gebruikt ook ruimte :)

Jan
Gewijzigd op 17/06/2023 10:02:24 door Jan R
 
PHP hulp

PHP hulp

18/07/2025 22:05:22
 
Rob Doemaarwat

Rob Doemaarwat

17/06/2023 11:02:22
Quote Anchor link
Je bedoelt een veld dat aangeeft dat het betreffende record "read-only" is? Of een enkel veld (in een record) dat "read-only" is (maar hoe wordt het dan bepaald, of in eerste instantie gevuld)?

En wat houdt "read-only" in: nooit meer aanpassen (tenzij "read only" weer wordt opgeheven), of alleen niet door bepaalde gebruikers. Op record niveau lijkt het me dan dat je het eerder over een soort status hebt (waarbij "read only" het "gevolg" is van deze status).
 
Jan R

Jan R

17/06/2023 11:54:14
Quote Anchor link
Rob Doemaarwat op 17/06/2023 11:02:22:
Je bedoelt een veld dat aangeeft dat het betreffende record "read-only" is? Of een enkel veld (in een record) dat "read-only" is (maar hoe wordt het dan bepaald, of in eerste instantie gevuld)?

En wat houdt "read-only" in: nooit meer aanpassen (tenzij "read only" weer wordt opgeheven), of alleen niet door bepaalde gebruikers. Op record niveau lijkt het me dan dat je het eerder over een soort status hebt (waarbij "read only" het "gevolg" is van deze status).


Record is ro nu standaard in dezelfde tabel met standaard false
ro-record kan niet aangepast door geen enkele gebruiker tenzij opgegeven door hoger gebruiksniveau via een formulier.

via query iets zoals update veld="123" where id="852" and readonly=false zelfde principe voor delete.

Jan
 
Ward van der Put
Moderator

Ward van der Put

17/06/2023 14:38:55
Quote Anchor link
In MySQL zijn BOOL en BOOLEAN synoniemen van TINYINT(1), waarbij (int) 1 gelijk is aan TRUE en (int) 0 gelijk is aan FALSE. Zie:

https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html

https://dev.mysql.com/doc/refman/8.0/en/boolean-literals.html
 

17/06/2023 15:48:52
Quote Anchor link
Autorisatie op kolommen regelt de database voor je. Je kunt het bedienen met het GRANT statement en het REVOKE statement.
Je kunt daarmee aangeven wat de CRUD-rechten zijn van elke database entiteit.

Als het goed is kan dit sinds een paar jaar ook met MariaDB (in ieder geval voor kolommen)
Mocht je een gecastreerde database moeten gebruiken dan zijn VIEWs met aparte leestoegang een alternatief.
Ik zie geen reden waarom je dit zelf opnieuw zou willen maken, anders dan om te leren.

Voor het geval ik de vraag niet helemaal heb begrepen; databases zijn ook in staat om per rij autorisatie te regelen, via RLS of Row Level Security. Voorwaarde is dat je het eerst per tabel aanzet met ALTER TABLE ... ENABLE ROW LEVEL SECURITY; Daarna kan je policies aanmaken om te bepalen in welke situatie welke rechten van toepassing zijn voor welke rol(len).
Gewijzigd op 17/06/2023 15:56:30 door
 
Rob Doemaarwat

Rob Doemaarwat

17/06/2023 16:06:39
Quote Anchor link
Nou ... ik heb er niet voor (door)geleerd, maar ik zou 'm gewoon lekker in dezelfde tabel laten staan. Ik heb wel voor minder een veld toegevoegd dat maar sporadisch wordt gevuld. Als je elk afzonderlijk veld "dat wel eens null kan zijn" af gaat splitsen naar een aparte tabel raak je het overzicht ook kwijt.

Tenzij het over een paar miljoen records gaat, waarvan er maar 1 of 2 "read-only" zijn.

En zoals gezegd zou ik er een "status" veld van maken (tinyint enum). Dan kun je er in de toekomst misschien nog wat extra functionaliteit aan hangen.
 
Ozzie PHP

Ozzie PHP

17/06/2023 17:36:50
Quote Anchor link
Je kunt in MySQL ook Bit als datatype gebruiken om een boolean op te slaan.
 

18/06/2023 08:40:52
Quote Anchor link
Rob Doemaarwat op 17/06/2023 16:06:39:
Nou ... ik heb er niet voor (door)geleerd, maar ...

Ervaring telt ook!

Als het puur om rechten tot gegevens gaat, is niets makkelijker dan te typen GRANT <SELECT, INSERT, UPDATE..> ON tabel (kolom1, kolom2) TO <rol of user>;
Kom je er niet meteen uit dan kan je de linkjes gebruiken in mijn vorige post.

Bij normalisatie wil je elk begrip of ding of een eigen tabel geven. Dat is alles wat je kunt zien als een zelfstandig naamwoord. In de tabellen sla je een of meerdere dingen op die je kunt benoemen met het zelfstandig naamwoord. Bijvoorbeeld in de tabel 'stoel' sla je elke stoel op van de achtbaantrein.

In de meeste gevallen geef je elke rij in de tabel een eigen ID als sleutel, zodat je de relaties kunt vastleggen tussen de verschillende dingen (zelfstandig naamwoorden). In beschrijvende ERD-schema's zie je vaak op de lijntjes van de relaties een verklaring als 'W maakt een X', of 'Y bestaat uit meerdere Z'.

Eigenschappen van begrippen of dingen leg je vast in kolommen van de tabel. Ofwel je legt bijvoeglijke naamwoorden vast. De stoel kan misschien rood zijn, of blauw. Voordat je kolommen aanmaakt, onderga je de lastigste stap van normaliseren. Maak je twee kolommen die je 'rood' of 'blauw' noemt, of moet je eerst de bijvoeglijke naamwoorden categoriseren? Rood en blauw zijn kleuren, dus misschien is een kolom 'kleur' toepasselijker. Dat hangt af van waarvoor je het vastlegt. Wil je van beide kleuren weten of ze voorkomen? Dan is een kolom 'kleur' handiger. Zijn er veel kleuren mogelijk, zijn er andere objecten die een kleur kunnen hebben (bijvoorbeeld de achtbaantrein), of wil je meer dingen vastleggen over de kleur? Dan moet je kleur een eigen tabel geven.

De vuistregel is: zelfstandig naamwoorden een eigen tabel, bijvoeglijk naamwoorden in een kolom. Maar zoals je hierboven al kunt lezen is elke situatie uniek, en ook het categoriseren is meestal niet zo eenvoudig. Tijdens het bedenken van een schema kun je met een veelheid van bijvoeglijk naamwoorden te maken hebben wat het meteen al lastig maakt om te verzinnen wat bij wat hoort.

Vergeet niet het doel van normalisatie. Dat is om niets dubbel op te slaan. Er is op Wikipedia een heel artikel aan gewijd, met onderaan een artikel naar het tegenovergesteld denormalisatie.

Denormalisatie doe je wanneer het de database relatief veel moeite scheelt om gegevens op te vragen. Bijvoorbeeld als het combineren van tabellen lang gaat duren, of als je ingewikkelde queries moet gebruikt om gegevens af te leiden (al kun je daarvoor ook een MATERIALIZED VIEW voor gebruiken).

Ga lekker aan de slag en ontdek wat goed werkt voor jouw situatie. Kom je er niet uit dan helpt het ons om te weten wat je precies waarom wilt vastleggen, en hoe het schema er uitziet. Dan kan je heel gericht commentaar krijgen.
 
Jan R

Jan R

18/06/2023 10:49:32
Quote Anchor link
Ad Fundum op 18/06/2023 08:40:52:
Als het puur om rechten tot gegevens gaat, is niets makkelijker dan te typen GRANT <SELECT, INSERT, UPDATE..> ON tabel (kolom1, kolom2) TO <rol of user>;
Kom je er niet meteen uit dan kan je de linkjes gebruiken in mijn vorige post.


Spijtig genoeg werkt een website altijd met dezelfde gebruiker.
Ozzie PHP op 17/06/2023 17:36:50:
Je kunt in MySQL ook Bit als datatype gebruiken om een boolean op te slaan.

Ward van der Put op 17/06/2023 14:38:55:
In MySQL zijn BOOL en BOOLEAN synoniemen van TINYINT(1), waarbij (int) 1 gelijk is aan TRUE en (int) 0 gelijk is aan FALSE.

ja/nee, waar/onwaar, 0/1 komt allemaal op hetzelfde neer hé :) sommigen gebruiken zelfs tekst. Dat is niet bepaald mijn favoriet.


Rob Doemaarwat op 17/06/2023 16:06:39:
Ik heb wel voor minder een veld toegevoegd dat maar sporadisch wordt gevuld. Als je elk afzonderlijk veld "dat wel eens null kan zijn" af gaat splitsen naar een aparte tabel raak je het overzicht ook kwijt.

Tenzij het over een paar miljoen records gaat, waarvan er maar 1 of 2 "read-only" zijn.

Om het overzicht niet kwijt te raken wou ik het ook in de tabel houden maar ik wou het toch een vragen.
Het gaat momenteel over 2 tabellen waarbij de grootste nu op 4400 records bevat met een stijging van ±350 per jaar. Ik zal het einde van 1 000 000 niet halen denk ik. 2 800 jaar er nog bij.


Allen bedankt om mee te denken en ideeën door te geven.
Jan
 

19/06/2023 06:31:25
Quote Anchor link
Jan R op 18/06/2023 10:49:32:
Spijtig genoeg werkt een website altijd met dezelfde gebruiker.

Je kunt de gebruiker tijdens een sessie eenvoudig veranderen met SET SESSION AUTHORIZATION, bijvoorbeeld aan het einde van de authenticatieprocedure. Zelfs MySQL heeft iets vergelijkbaars in PHP met mysqli::change_user().

In plaats van bovenstaande kan je een tweede keer een databaseverbinding aanmaken met de andere gebruiker.
Je hebt in ieder geval keuze.
Gewijzigd op 19/06/2023 06:39:25 door
 
Jan R

Jan R

19/06/2023 07:02:14
Quote Anchor link
Theoretisch heb je gelijk. Praktisch niet. Bepaalde providers kennen je maar 1 gebruiker toe.
Op mijn nas zou ik er een paar honderd kunnen maken. Op mijn one.com website echter geen BIJmaken.
 

19/06/2023 07:25:43
Quote Anchor link
En wie bepaalt er welke provider jij hebt?
Gewijzigd op 19/06/2023 07:27:47 door
 



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.