Normalisatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C++ Ontwikkelaar

Functieomschrijving Ben jij als software ontwikkelaar toe aan een nieuwe uitdaging? Dan zoeken wij jou! Voor het maken van de procesbesturingssoftware gebruiken onze projectteams een in C++ en C# geschreven tool. Dit is een gedistribueerd object framework wat alle kernfuncties biedt voor een procesautomatisering. Verder zullen jouw werkzaamheden o.a. bestaan uit: Ontwerpen, programmeren en testen van product aanpassingen; Analyseren van vragen en wensen van gebruikers en deze vertalen naar een functioneel ontwerp; Inzichtelijk maken van voortgang omtrent softwarewerkzaamheden, o.a. door middel van SCRUM; Continu toetsen van het effect van nieuwe releases op andere tools en processen; Implementeren van nieuwe product

Bekijk vacature »

Junior Front end developer

Functie Jij als developer gaat ons helpen onze producten verder te ontwikkelen en in te zetten in de markt. Op dit moment bestaat ons SaaS product uit 3 componenten die zowel los als in een pakket gekocht kunnen worden. Het gaat hier om een online kaartapplicatie, een workflow tool en een monitoring tool. Momenteel zijn wij 3 jaar geleden gestart met de ontwikkeling. De tech-stack waarmee we werken is voornamelijk Javascript, Vue.js en Python. Daarnaast gebruiken wij FaundaDB als database en werken we veel met GIS applicaties. De uitdaging die we momenteel hebben is dat we momenteel een intern team

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Boskoop dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat technische klussen uitvoeren op locatie bij klanten.Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat software en webapplicaties ontwikkelen met behulp van de talen

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 »

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 »

C# Developer

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Door middel van ASP.NET, MVC Framework en C# ga je webshops, websites en webapplicaties ontwikkelen. Je zorgt voor de optimalisatie van bestaande software en de automatisering van bedrijfsprocessen. Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Bedrijfsprofiel

Bekijk vacature »

Junior PHP ontwikkelaar

Functie Wij hebben onlangs onze eerste collega’s aangenomen, waardoor ons development team momenteel uit 4 personen bestaat. We bouwen onze software op basis van een PHP-framework (wat op zichzelf een Symfony framework is). Qua ontwikkeling focussen wij ons op 3 focus velden; – API-ontwikkeling/ Component Creatie – Implementatie – Framework ontwikkeling; het toevoegen van nieuwe functionaliteit of interne microservices Onze senior software engineer focust zich momenteel op de laatste twee punten, maar wij komen handen te kort op het eerste veld. Daarom zijn wij op zoek naar een enthousiaste junior software engineer die graag de kneepjes van het vak wil

Bekijk vacature »

Randstad - Freelance Backend Developer/ Data Engin

Starting date: 10.05.2023 Salary range: €67,00 - €77,00 Duration: 6 months Hours: 40 Working model: Hybrid* MUST be NL based Job description: Our vision is to have a consistent and data driven experience for all sales across all our operating companies. Our mission is to enable our salespeople to be able to reach out to the right company at the right time. We do this by creating data driven micro services and solutions. We mainly focus on implementation in the Google Cloud but also integrate with local systems and other cloud solutions. A typical day: As a back-end developer you

Bekijk vacature »

Integratie Developer / Architect

Dit ga je doen Als Integratie Developer / Architect binnen deze organisatie krijg je echt de kans om impact te maken. De organisatie is groeiende maar houdt een corporate cultuur buiten de deur. Heb je een goede business case: zorg voor goede argumentatie en ga ervoor! Geen stroperig beslissingsproces dat jouw ideeën in de weg staat! Enkele van jouw taken: Je ontwerpt en ontwikkelt nieuwe integraties met behulp van interne tools (Boomi) of externe partners; Je vertaalt functionele specificaties naar technische oplossingen; Je denkt mee over strategische ontwikkelingen op het gebied van applicatie integratie; Je voert regie op leveranciers en

Bekijk vacature »

Software Developer

Longship.io gaat de wereld veroveren met baanbrekende software en legendarische... pizza-avonden! Lees hier de vacature van Software Developer! Bij Longship werken we met een team van 5 mensen aan software voor laadpaal operators. Longship is ontstaan in 2020 met als doel om de elektrische mobiliteitstransitie aan te jagen. We zijn nu al een wereldwijde speler doordat we continu voorop lopen in innovatie. Ons platform helpt het versneld elektrificeren van wagenparken, internationaal! Wij zijn een startup met grote ambities die we willen bereiken met een relatief klein en efficiënt team. Je krijg de kans om ontzettend veel te leren van ervaren

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 »

UX Writer (m/v/d)

UX Writer (m/v/d) Everything we do, starts with you. Together with you, we build the most human-centric fintech. We have the ambition to create the next. And - with Bertelsmann - a strong foundation to start from. Let’s make it new – for society and for yourself. Wij zijn op zoek naar een UX Writer (m/v/d) Fulltime - Op ons kantoor in Amsterdam of Heerenveen / deels vanuit huis Als UX Writer bij Riverty hou jij je bezig met onze strategie om daar te zijn waar onze gebruikers zijn en op de manier waarop zij ons nodig hebben, terwijl wij

Bekijk vacature »

C# .NET Backend Developer HBO Javascript

Samengevat: Deze werkgever is een professionele speler op gebied van IT en E-Commerce. Wil jij werken voor een e-commerce platform? Heb je ervaring met C#, Javascript en Scrum? Vaste baan: C# .NET Developer Backend E-Commerce 3.400 - 4.500 Backend Developer Wij ontwikkelen software voor E-Commerce toepassingen. Ons eigen Content Management systeem biedt een integrale oplossing met diverse ERP software. Onze systemen zijn vaak complex en omvangrijk en draaien bij grote organisaties. Maar ook kleine ondernemingen hebben steeds vaker behoefte aan een vlekkeloos werkende E-Commerce oplossing. Zij bieden een uitdagende werkomgeving met gezellige collega's. Je krijgt veel vrijheid en er is

Bekijk vacature »

Product Developer (M/F), Fulltime 40 h/week

A global Plantbased revolution – that is our dream. Maximising the protein transition – that is our mission. Producing and developing sustainable and delicious products – that is what we do. Ojah is a fast growing company with a mission and has the ambition to be the world leader in its field. To support this growth we are hiring new colleagues. People that would like to make a difference and dare to dream big. With currently a 150 colleagues proudly working on our exceptional products. Working in a dynamic surrounding that runs full speed ahead. We need you! Product Developer

Bekijk vacature »

.NET Developer C# VB

Samengevat: Deze werkgever is actief in software voor het matchen van vraag en aanbod van gebruikte auto-onderdelen. Ben jij een .NET Developer? Heb je ervaring met het ontwikkelen (REST) en integreren van webservices? Vaste baan: C# .NET Developer C# VB HBO €2.600 - €6.200 Wij ontwikkelen software om vraag en aanbod van onderdelen van personenauto's bij elkaar te brengen. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. De branche van dit bedrijf is Automotive. Functie: Voor de vacature als .NET Developer Dordrecht HBO ga je

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

02/05/2024 10:19:53
 
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.