Normalisatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front end developer

Functie Jij als ervaren Front end developer bent een expert het gebied van Javascript en React. Je wordt onderdeel van een multidisciplinair team bestaande uit een PO, twee Front end developers, een DevOps/Back end developer, een UX/UI designer en een projectmanager. Verder is er iemand verantwoordelijk voor de HR en is de algemeen directeur nauw betrokken bij alle projecten. Dagelijks hou jij je bezig met de verschillende projecten die zijn opgenomen in de sprint. Daarnaast denk je mee over mogelijke oplossingen om de behoefte van de klant op de beste manier in te vullen. Verder spar jij intern met collega’s

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Cloud Engineer

Ben jij een ervaren Cloud Engineer die complexe omgevingen kan overzien en wil je graag in vaste dienst werken bij een professioneel en kleinschalig bedrijf waar je een belangrijke rol kan spelen? Wij, IntelliMagic in Leiden, ontwikkelen specialistische IT monitoring software die we als SaaS oplossing verkopen aan grote bedrijven in Europa en de VS. We zijn een Nederlands bedrijf met een goede sfeer en met grote waardering voor de persoonlijke inbreng en kwaliteiten van onze medewerkers. Wij zoeken een ervaren Cloud Engineer met academisch denkniveau die verantwoordelijk wordt voor het beheer van de cloud infrastructuur voor onze Europese klanten.

Bekijk vacature »

(Junior) PHP Ontwikkelaar bij een retail bedrijf i

Bedrijfsomschrijving Ben jij een ervaren PHP ontwikkelaar met een passie voor retail en ICT? Wil jij werken in een team dat zich bezighoudt met het ontwikkelen van uitdagende applicaties voor een groot retailbedrijf in Delft? Dan zijn zij op zoek naar jou! Functieomschrijving Als PHP Ontwikkelaar werk je in een team aan de ontwikkeling van applicaties die door de gehele organisatie worden gebruikt. Je bent verantwoordelijk voor het ontwikkelen, testen en implementeren van deze applicaties. Je werkt hierbij nauw samen met andere ontwikkelaars, projectmanagers en stakeholders binnen de organisatie. Je taken bestaan onder andere uit: Ontwikkelen van nieuwe functionaliteiten en

Bekijk vacature »

Fullstack Developer

Functieomschrijving Heb je kort geleden jouw HBO diploma ICT development behaald? Of zit je nog aan het begin van je carrière en heb je affiniteit met C#.NET? Voor een erkende werkgever in de omgeving van Oosterhout zijn wij op zoek naar een fullstack developer. Als C#.NET developer werk je samen met een vooruitstrevend team aan het ontwikkelen van maatwerk software voor klanten. Je hebt affiniteit met SQL, maar nog belangrijker is dat je kennis en ervaring hebt met C#.NET. Jouw werkzaamheden zien er als volgt uit: Het ontwikkelen van onze high-availability en high-performance backend; Je begint de dag rond 8:30

Bekijk vacature »

C# .NET Developer

Dit ga je doen Ontwikkelen van de Back-end in .NET6 / C# en WebAPI (Focus);) Ontwikkelen van de Front-End in Nodje.js en Angular (secundair); Ontwikkelen in Blazor; Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie. Hier ga je werken Binnen deze organisatie werken duizenden mensen binnen allerlei verschillende disciplines. Tevens hebben zij veel specialiteiten in huis, waaronder ook .Net Developers. Ter uitbreiding van een nieuw team en ter ondersteuning van het project zijn ze opzoek naar een nieuwe collega voor het team. Als C#.NET Developer zal jij je

Bekijk vacature »

Senior Organisatieontwikkelaar

Als Organisatieontwikkelaar zorg je ervoor dat we in het magazijn van Coolblue altijd vooruit voetballen op het gebied Medewerker en Organisatie Ontwikkeling. Zo draag je bij aan een toekomstbestendig magazijn waar we klanten én medewerkers elke dag blijven verwonderen. Wat doe je als Senior Organisatieontwikkelaar bij Coolblue? Als Organisatieontwikkelaar werk je voor het magazijn van Coolblue. Je krijgt er energie van om continue te bouwen aan een toekomstbestendige organisatie. Dat doe je samen met 17 collega's in het HR-team, ieder met een eigen specialisme. Je werkt graag zelfstandig en je weet snel je weg te vinden als verandermanager. Ook ben

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 »

Python developer Consultancy

Functie Als Python developer bij deze organisatie werk je voor verschillende klanten. Doordat de oprichter een groot netwerk heeft kun je zelf voorkeuren uitspreken in het type projecten dat je wilt gaan doen. Zo zijn er bijvoorbeeld langdurige of juist korte projecten, maar is ook het type klant, of project bespreekbaar. Werk jij bijvoorbeeld graag aan een nieuw, state-of-the-art web portaal of ben je liever betrokken bij een migratietraject van een bestaande applicatie? Wij gaan voor jou aan de slag! Eisen • Je bent een gedreven developer met sterke voorkeur voor Python • Je bent meer dan een codeklopper •

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

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 »

Front-end Developer

Gezellige team, passie en een groene toekomst! Lees hier de vacature van Front-end Developer bij All in Power! All in power heeft zich tot doel gesteld écht bij te dragen aan de energietransitie. Dit doen wij door de markt voor energie volledig op zijn kop te zetten. Producenten van schone (wind- of zonne-)energie verkopen via ons platform hun energie rechtstreeks aan gebruikers. Of dit nu huishoudens, bedrijven of bijvoorbeeld laadpalen zijn ons platform maakt het uitwisselen van energie mogelijk. Zo maken we de business case van onze klanten veel sterker en loont het om (meer) te investeren in vergroening voor

Bekijk vacature »

Software Ontwikkelaar

Functie omschrijving Voor een echt familiebedrijf in de omgeving van 's-Hertogenbosch ben ik op zoek naar een Software Developer. Jij gaat in de functie van Software Developer werken met C# en .NET framework Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Deze organisatie is

Bekijk vacature »

.NET developer

Functie Jij begint als .NET ontwikkelaar in een team met 10 andere Software Engineers. De werkzaamheden zijn afwisselend, zo kan het dat jij bezig bent met volledig nieuwe features of het door ontwikkelen van bestaande sites of shops. Wij ontwikkelen web applicaties, maar ook mobiele applicaties. Daarnaast bijt jij je soms ook van in externe koppelingen met systemen zoals een ERP. Als team is er een duidelijke focus m.b.t. het waarborgen van de performance en snelheid van webshops. Ook zijn wij expert op het gebied van configuratoren. Kortom enorm veel afwisselende werkzaamheden! Ook jouw werkplek kan afwisselend zijn. Soms heb

Bekijk vacature »

PHP developer

Functie omschrijving Voor een klein bedrijf in de buurt van Nieuwegein zijn wij per direct op zoek naar een talentvolle PHP developer. Er wordt veel ruimte geboden voor eigen initiateven, waardoor je een mooie stempel kan drukken op jouw eigen werkzaamheden (zowel operationeel als strategisch). Het bedrijf heeft middels externe programmeurs een multimedia platform ontwikkeld, maar willen geleidelijk de ontwikkeling naar binnen halen. Om die reden zoeken zij een communicatieve interne PHP developer die graag meebouwt aan het succesvolle product. Je gaat de volgende werkzaamheden verrichten: Platform beheren en programmeren (PHP, MySQL, JQuery, Javascript, XML & HTML); Communicatie en aansturing

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

15/05/2024 13:57:47
 
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
 
Ad Fundum

Ad Fundum

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 Ad Fundum
 
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.
 
Ad Fundum

Ad Fundum

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
 
Ad Fundum

Ad Fundum

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 Ad Fundum
 
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.
 
Ad Fundum

Ad Fundum

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 Ad Fundum
 



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.