Toon posts:

[Datamodel] Start

Pagina: 1
Acties:
  • 112 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb in het verleden al wat websites gebouwd in HTML maar heb nog totaal geen ervaring met PHP/MySQL. Nu heb ik een leuk test projectje gecreeerd.

Aangezien in nog nooit met databases heb gewerkt, wil ik er zeker van zijn dat ik een goede start maak. Ik wil dan ook graag mijn datamodel voorleggen en hoop op- en aanmerkingen te krijgen.

Allereerst even een globale uitleg van de site:

De site biedt "aanbieders" de mogelijkheid om diverse soorten producten op de website te zetten (doe ik handmatig dus nog geen inlog etc.) en wanneer bezoekers interesse hebben kunnen ze een formulier invullen. Extra moeilijkheid zit erin dat er losse producten worden aangeboden maar ook producten die samengesteld zijn uit die losse producten. Dus als het om bijv. zou gaan om messen, vorken, lepels dan kunnen die als los product worden aangeboden maar er kan ook een "compleet bestek" worden aangeboden die natuurlijk bestaat uit messen, vorken, lepels etc. Wanneer producten tot een "compleet bestek" horen dan moeten ze niet bij de "losse producten" worden getoond. Op de site moet kunnen worden gezocht op de "losse producten zoals lepels of vorken maar ook op de complete producten als een "compleet bestek".

Wat ik tot nu toe heb bedacht aan tabellen:

Aanbieder (alle informatie over de aanbieder)
AB_ID (Prim. key)
AB_Naam
AB_Adres
AB_Postcode
AB_Woonplaats
AB_Telefoon
AB_Provincie
AB_Contactpersoon


Categorie (dit zijn de productcategorien)
CAT_ID (Prim. key)
CAT_Naam

Product (alle informatie over de aangeboden producten)
PR_ID (Prim. key)
CAT_ID
AB_ID
PIC_ID
PR_Productcode (bij interesse kan bezoeker deze code via formulier versturen voor meer info)
PR_Titel
PR_Fabrikant
PR_Type
PR_Kleur
PR_Afmeting
PR_PrijsNormaal
PR_PrijsAanbieding
PR_DatumToevoeging
PR_OverigeInfo
PR_Verkocht (j/n)
PR_BehorendCP (j/n) (om producten behorende tot een compleet product aan te duiden)

CompleetProduct (tabel om diverse losse producten te koppelen aan een compleet product)
CK_ID (prim. key)
COM_ID
PIC_ID
PR_ID

Compleet (Informatie over het complete product)
COM_ID (prim. key)
COM_Naam
COM_PrijsNormaal
COM_Prijsaanbieding


Om te beginnen wil ik dan kunnen zoeken op

1) complete producten
2) losse producten

en later op:

Prijsrange (0-500 / 500 - 1000 etc)
Provincie (alle losse/complete producten in "Gelderland")
Nieuwe producten


Ik hoor graag of ik op de goede weg ben en wat ik zou kunnen verbeteren voor ik van start ga!

Iedereen die de moeite neemt om dit door te nemen, alvast HEEL erg bedankt!

  • Boss
  • Registratie: September 1999
  • Laatst online: 26-05 08:15

Boss

+1 Overgewaardeerd

ik vind het idee van hoe je 'samengestelde' producten opslaat een beetje vreemd, maar dat komt misschien omdat ik je producten niet helemaal ken. Van een samengesteld product kan je nu bijv. ook 1 onderdeel op 'verkocht' zetten, terwijl dat toch niet zou moeten kunnen?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Op zich ziet het er niet verkeerd uit. Wat ik ABSOLUUT zou doen is die prefixes weggooien. PR_ID en CK_ID, wat zijn dat? ProductID, geen PR_ID. COM_Naam is bv minder goed, kies Naam, het zit al in een tabel, Compleet. Ik zou 'Compleet' overigens CompleetProduct noemen en CompleetProduct zou ik CompleetProductSamenstelling of iets dergelijks noemen.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • seweso
  • Registratie: Augustus 2003
  • Laatst online: 04-04-2018

seweso

de mouw is uit de aap

Boss schreef op 07 april 2004 @ 21:04:
ik vind het idee van hoe je 'samengestelde' producten opslaat een beetje vreemd, maar dat komt misschien omdat ik je producten niet helemaal ken. Van een samengesteld product kan je nu bijv. ook 1 onderdeel op 'verkocht' zetten, terwijl dat toch niet zou moeten kunnen?
Inderdaad, je moet denk ik een product welke samengesteld is uit maar één product toch zien als samengesteld product, althans database technisch is dat handiger.

seweso's blog


Verwijderd

Topicstarter
Daar heb je inderdaad gelijk in maar ik moet wel producten op verkocht kunnen zetten. Misschien moet ik voor complete producten ook een verkocht kolom toevoegen maar dan houd je jouw probleem dat losse producten op verkocht gezet zouden kunnen. Zoals gezegd werk ik hier voor het eerst mee dus misschien heb je een beter voorstel om dit te doen?

Misschien zoals Seweso zegt om alle producten als samengestelde te zien, misschien wat tips hoe de tabellen er dan uit komen te zien?

[ Voor 17% gewijzigd door Verwijderd op 07-04-2004 21:28 ]


  • seweso
  • Registratie: Augustus 2003
  • Laatst online: 04-04-2018

seweso

de mouw is uit de aap

Volgens mij heb je de volgende dingen nodig:

productgroep
• kan één of meerdere producten bevatten.
• kan verkocht worden
• heeft een aanbieder
• heeft een prijs

product
• technische gegevens

aanbieder
• bla bla

Maar ja, allemaal leuk en aardig maar wat moet je ermee? Stel dat je inderdaad een bestek in de database invoert. Moet je dan elke lepel apart invoeren? Kijk als het om unieke items gaat (antiek?) kan ik me dat voorstellen. Maar een lepel is een lepel en een vork is ook gewoon maar een vork. Daar zou ik niet te veel bytes aan willen spenderen...

seweso's blog


Verwijderd

Topicstarter
Ja, het gaat inderdaad om allemaal unieke producten.

Misschien is een ander voorbeeld beter. Stel het gaat om artikelen uit een slaapkamer. Je kan een compleet ingerichte slaapkamer kopen maar op de site worden ook losse componenten als bedden, kledingkasten, nachtkastjes etc. verkocht. Ik moet dus makkelijk alle losse producten kunnen tonen maar ook de complete slaapkamers met dus een lijst van alle producten die in die complete slaapkamer voorkomen inclusief details daarover.

Jij zegt dan: zet alle details over een product in tabel product en geef elk product een productgroepcode. Is het een los product dan heeft het een unieke productgroepcode en behoort een product tot een complete slaapkamer dan hebben meerdere producten dezelfde productgroepcode. Zet ik dan in de productgroeptabel ook een verwijzing naar de categorie zodat je weet of het om een los product gaat of een compleet product of plaats je dat op Product niveau?

  • seweso
  • Registratie: Augustus 2003
  • Laatst online: 04-04-2018

seweso

de mouw is uit de aap

Verwijderd schreef op 07 april 2004 @ 23:22:
...
Zet ik dan in de productgroeptabel ook een verwijzing naar de categorie zodat je weet of het om een los product gaat of een compleet product of plaats je dat op Product niveau?
Dat laatste hoef je niet bij te houden, dat is namelijk een afleidbaar-feit. Ik leg uit: Als je wil weten of een groep uit maar één product bestaat en dus een "los product" is, dan hoef je alleen maar te tellen hoeveel producten er binnen die groep zitten. "SELECT COUNT(*) FROM `product` WHERE `group` = '$groupid'"; Bij 1 product is het een "los product" en bij > 1 is het een "compleet product".

Als je dingen dubbel in een database opslaat dan moet je ook dingen dubbel programmeren (meer werk). Gebruik altijd zo min mogelijk tabellen, zo min mogelijk velden en gebruik zo min mogelijk rijen om gegevens op te slaan. B)

seweso's blog


  • Boss
  • Registratie: September 1999
  • Laatst online: 26-05 08:15

Boss

+1 Overgewaardeerd

Je zou het nog anders kunnen doen. Bij het slaapkamer voorbeeld moest ik denken aan de situatie waarin een product (bed bijvoorbeeld) het onderdeel kan zijn van verschillende samengestelde producten.
Dan moet je dus echt 1 tabel maken met alle losse producten (de onderdelen) en daarna een tabel met de combinaties. En dan nog steeds kan het ook voorkomen dat een combinatie uit slechts 1 product bestaat!

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Boss> Ik begrijp geloof ik niet helemaal waarin jouw aanpak verschilt van die van Seweso. In beide gevallen heb je toch een tabel met losse producten (Product) en een tabel voor samengestelde (productgroep tabel van Seweso).
Dat laatste hoef je niet bij te houden, dat is namelijk een afleidbaar-feit.
Ik dacht dat het misschien later met queries handiger zou zijn. I.p.v dat je via een count moet bepalen of het een los/compleet product het gewoon op j/n zet. Voor losse producten zou een querie dan toch makkelijk moeten zijn: geef me alle producten uit categorie 1 (bed) en die niet onderdeel uitmaken van compleet product.

Aangezien ik nog weinig met PHP/SQL heb gewerkt kan ik nog niet zo goed overzien welke consequenties alles heeft.

  • EfBe
  • Registratie: Januari 2000
  • Niet online
seweso schreef op 08 april 2004 @ 10:43:
Dat laatste hoef je niet bij te houden, dat is namelijk een afleidbaar-feit. Ik leg uit: Als je wil weten of een groep uit maar één product bestaat en dus een "los product" is, dan hoef je alleen maar te tellen hoeveel producten er binnen die groep zitten. "SELECT COUNT(*) FROM `product` WHERE `group` = '$groupid'"; Bij 1 product is het een "los product" en bij > 1 is het een "compleet product".
NOOIT je model aanpassen aan queries. Het model is statisch en moet correct zijn. Daarna ga je je model pas queryen.
Als je dingen dubbel in een database opslaat dan moet je ook dingen dubbel programmeren (meer werk). Gebruik altijd zo min mogelijk tabellen, zo min mogelijk velden en gebruik zo min mogelijk rijen om gegevens op te slaan. B)
Dus jij pleit voor 1 grote tabel? De TS heeft een vraag, het lijkt me dan ook verstandig om de persoon van goed advies te voorzien. Wat jij hierboven geeft is prutsen, sorry. Een goed uitgenormaliseerd model heeft t.a.t. de voorkeur, het is nl. het directe resultaat van een abstract correct model.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
Een goed uitgenormaliseerd model heeft t.a.t. de voorkeur, het is nl. het directe resultaat van een abstract correct model.
Klinkt goed maar kun je me ook op weg helpen om tot zoiets te komen! Ben erg benieuwd hoe jouw design eruit zou zien.

  • LinuX-TUX
  • Registratie: December 2003
  • Laatst online: 26-05 10:16
Wat jij wil leren is het samenstellen van een Database waarin alle vragen naar mogelijke informatie in kunnen worden beantwoord :| Ik heb hier een boek liggen naast me, dat ik schat op minimaal 1 Kilo papier }) (ISBN: 90-430-0595-9)

Vergeef me als de volgende begrippen vaag beginnen te worden, ik had eerst ook zoiets van "heee, let's make a movie database, whoppa, that fits and also works, lets go on", maar nu ik wat serieuser met het onderwerp bezig ben ivm m'n opleiding begint het echt harder en harder te worden.

Wat je voor jezelf zou moeten maken is een ERD. An E R D what? Een Entiteit Relatie Diagram (klinkt niet in het nederlands, maar klopt wel :) ) Hierin loop je alle onderwerpen/entiteiten af en geef je ze allemaal attributen die daarbij behoren. (Entiteit:>Personen Attributen>ID,naam,adres,postcode,woonplaats)

Zoals je hierboven vroeg richting "wat is een normalisatie"? Klein voorbeeld: Personen: ID, naam,adres,postcode,woonplaats. <> Een generaal tabel, met 2 sub-type tabellen: 1 voor de klanten (bijvoorbeeld bedrijf waar ze werken) en 1 voor de medewerkers (06 nummer voor als ze in het weekend opgeroepen moeten worden). Helaas zag ik niet 123 in jouw voorbeeld waar het bij toegepast kon worden, maar het is ook niet zo vroeg meer :Y)

Ga alsjeblieft voor jezelf een echte E R D maken. (link is een voorbeeldje inclusief kardinaliteit en slecht gedefinieerde relaties }) ) Hiermee loop je express tegen een hoop "maar wat als, dan, anders" vragen op, waardoor je uiteindelijk een mooi algemeen, op de toekomst voorbereid geheel krijgt. De queries die daaruit volgen kunnen dan soms wat moeilijk zijn en omslachtig lijken, maar je database des te efficienter.

Tot slot: waarom geven wij bijna geen direct antwoord op je vraag? Daarvoor zou je in een chatkanaal moeten zitten. We weten gewoonweg niet hoe gedetailleerd en uitgebreid je alles voor elkaar wil gaan krijgen. Voor die Complete producten en losse producten had ik zelf een koppeltabel in gedachten, maar wie ben ik :)

Voor de rest zal de huidige opbouw wel aan jouw eisen (kwa zoeken) voldoen.

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Ik zou toch meer pleiten voor een NIAM/ORM model: http://www.orm.net.
Gratis ORM modeler voor windows:
http://www.microsoft.com/...39-4286-B8B6-7A9B84CFA709

Je modelt het model daarin en genereert dan de DDL Sql ermee.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • seweso
  • Registratie: Augustus 2003
  • Laatst online: 04-04-2018

seweso

de mouw is uit de aap

EfBe schreef op 08 april 2004 @ 17:11:
[...]
Dus jij pleit voor 1 grote tabel? De TS heeft een vraag, het lijkt me dan ook verstandig om de persoon van goed advies te voorzien. Wat jij hierboven geeft is prutsen, sorry. Een goed uitgenormaliseerd model heeft t.a.t. de voorkeur, het is nl. het directe resultaat van een abstract correct model.
Ja nee hèhè je kunt inderdaad ook te weinig tabellen hebben, misschien was uitleg over hoe je een goede relationele database moet maken beter (m.b.v. een linkje misschien). Maar dan ben je iemand ook niet echt concreet aan het helpen. Hoewel het natuurlijk wel heel leerzaam kan zijn als je zelf een beetje loopt te freubelen.

Het is trouwens wél mogelijk om een heel systeem te bouwen op maar één tabel. Ik heb namelijk zo (met maar 5 velden) een systeem gebouwd waarmee je allerlei objecten kan opslaan. Dus waar je classen in kan definieren met eigenschappen en waar je objecten kan toevoegen van een bepaalde class (waarbij de grafische user-interface voor dat object automatisch word gegenereerd zodat je de eigenschappen kan wijzigen).

seweso's blog


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
seweso schreef op 09 april 2004 @ 09:32:
Het is trouwens wél mogelijk om een heel systeem te bouwen op maar één tabel. Ik heb namelijk zo (met maar 5 velden) een systeem gebouwd waarmee je allerlei objecten kan opslaan. Dus waar je classen in kan definieren met eigenschappen en waar je objecten kan toevoegen van een bepaalde class (waarbij de grafische user-interface voor dat object automatisch word gegenereerd zodat je de eigenschappen kan wijzigen).
En waarom heb je toen gebruik gemaakt van een database. Je had dan net zo goed tekstbestanden kunnen gebruiken?

[ Voor 4% gewijzigd door cameodski op 09-04-2004 09:46 ]

Never underestimate the power of


  • seweso
  • Registratie: Augustus 2003
  • Laatst online: 04-04-2018

seweso

de mouw is uit de aap

cameodski schreef op 09 april 2004 @ 09:46:
[...]

En waarom heb je toen gebruik gemaakt van een database. Je had dan net zo goed tekstbestanden kunnen gebruiken?
Een database is toch wel een heel stuk sneller dan een tekst bestand, mits je gericht informatie zoekt.

Als de TS ook met classen wil werken (dus dat je voor een bed andere eigenschappen kan bijhouden dan bij een vork) dan is dit niet offtopic en anders moet die discussie wellicht ergens anders gevoerd worden (als men het nog niet snapt).

seweso's blog


  • EfBe
  • Registratie: Januari 2000
  • Niet online
seweso schreef op 09 april 2004 @ 09:32:
Ja nee hèhè je kunt inderdaad ook te weinig tabellen hebben, misschien was uitleg over hoe je een goede relationele database moet maken beter (m.b.v. een linkje misschien). Maar dan ben je iemand ook niet echt concreet aan het helpen. Hoewel het natuurlijk wel heel leerzaam kan zijn als je zelf een beetje loopt te freubelen.
Een datamodel maken is een serieuze taak, dat begint niet met freubelen, maar met het lezen van wat theorie over hoe en wat. Iedere gek en zn broer kunnen wat tabelletjes in elkaar flanzen met een wizard. Dat maakt het nog geen goed datamodel. Een datamodel dat niet correct is zorgt ervoor dat de applicatie ook niet correct te bouwen is. Het heeft dan ook inmense impact op je applicatie en kijken naar het aantal tabellen of velden is GEEN juiste manier om te bepalen of je op de juiste weg zit. Het gebruiken van een modelleringstechniek die in een half uurtje te leren is echter wel.
Het is trouwens wél mogelijk om een heel systeem te bouwen op maar één tabel. Ik heb namelijk zo (met maar 5 velden) een systeem gebouwd waarmee je allerlei objecten kan opslaan. Dus waar je classen in kan definieren met eigenschappen en waar je objecten kan toevoegen van een bepaalde class (waarbij de grafische user-interface voor dat object automatisch word gegenereerd zodat je de eigenschappen kan wijzigen).
Ik kan een systeem bouwen met 1 tabel en 2 fields: ID (GUID) en een binair field waarin in het object serialize. Nuttig? nee in het geheel niet, want het is niet te querien. Als ik 10 entities heb met ieder 10 attributes, dan heb ik dus 10 tables met ieder 10 fields, en een hele rits constraints (foreign, unique, primary key). Gewoon die free modeller gebruiken en wat theorie over ORM lezen en je hebt binnen een uur een model klaar wat correct is en werkt en onderhoudbaar is.
seweso schreef op 09 april 2004 @ 10:57:
Een database is toch wel een heel stuk sneller dan een tekst bestand, mits je gericht informatie zoekt.
Nou, in jouw opzet lijkt me dat niet.
Als de TS ook met classen wil werken (dus dat je voor een bed andere eigenschappen kan bijhouden dan bij een vork) dan is dit niet offtopic en anders moet die discussie wellicht ergens anders gevoerd worden (als men het nog niet snapt).
Wat hebben de classes te maken met het model? Ik denk toch echt dat de TS meer kaas van datamodellering snapt dan jij.

[ Voor 14% gewijzigd door EfBe op 09-04-2004 11:17 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • seweso
  • Registratie: Augustus 2003
  • Laatst online: 04-04-2018

seweso

de mouw is uit de aap

EfBe schreef op 09 april 2004 @ 11:16:
[...]

Een datamodel maken is een serieuze taak, dat begint niet met freubelen, maar met het lezen van wat theorie over hoe en wat. Iedere gek en zn broer kunnen wat tabelletjes in elkaar flanzen met een wizard. Dat maakt het nog geen goed datamodel. Een datamodel dat niet correct is zorgt ervoor dat de applicatie ook niet correct te bouwen is. Het heeft dan ook inmense impact op je applicatie en kijken naar het aantal tabellen of velden is GEEN juiste manier om te bepalen of je op de juiste weg zit. Het gebruiken van een modelleringstechniek die in een half uurtje te leren is echter wel.


[...]

Ik kan een systeem bouwen met 1 tabel en 2 fields: ID (GUID) en een binair field waarin in het object serialize. Nuttig? nee in het geheel niet, want het is niet te querien. Als ik 10 entities heb met ieder 10 attributes, dan heb ik dus 10 tables met ieder 10 fields, en een hele rits constraints (foreign, unique, primary key). Gewoon die free modeller gebruiken en wat theorie over ORM lezen en je hebt binnen een uur een model klaar wat correct is en werkt en onderhoudbaar is.


[...]

Nou, in jouw opzet lijkt me dat niet.


[...]

Wat hebben de classes te maken met het model? Ik denk toch echt dat de TS meer kaas van datamodellering snapt dan jij.
Misschien is het handiger om hier verder te discussieren en om hier concreet de TS te helpen :*)

seweso's blog


Verwijderd

@ EfBe

Ik zou zeker niet kiezen voor een veldnaam 'Naam' in een tabel.

Stel dat je nog een tabel hebt met een veldnaam 'Naam'.
Dat krijg je dus problemen als je bijvoorbeeld een select doe.
(je kunt natuurlijk "Select P.Naam AS productnaam FROM tblProducten P" doen, maar ik pleit toch voor duidelijke namen en minder script)

Ook is het onderscheid in je script vaak niet duidelijk als je geen duidelijke veldnamen gebruikt.


Dus in een tabel 'Producten':

lngProductID
lngPr_CategorieID (sleutel naar lngCategorieID in tabel 'Categorieen')
txtPr_Naam

En in een tabel 'Categorieen':

lngCategorieID
txtCa_Naam

[ Voor 18% gewijzigd door Verwijderd op 09-04-2004 12:00 ]


  • EfBe
  • Registratie: Januari 2000
  • Niet online
seweso schreef op 09 april 2004 @ 11:48:
Misschien is het handiger om hier verder te discussieren en om hier concreet de TS te helpen :*)
Ik zie niet in waarom die thread nodig is, aangezien JIJ er de ballen van snapt, tenzij je die thread nodig hebt om de vraag op te lossen: wat is een relationeel model. HIER de TS helpen is wel een goed idee daarentegen.
Verwijderd schreef op 09 april 2004 @ 11:58:
@ EfBe

Ik zou zeker niet kiezen voor een veldnaam 'Naam' in een tabel.
Niet? Ik heb een entiteit, bv Persoon. Die heeft attributes zoals 'Naam', 'Leeftijd' etc. Of ga jij alle attributes prefixen met 'Persoon' ? Indien ja, doe je dat ook bij bv Classes? De class Customer, heeft die ook velden als CustomerName, CustomerAddress etc?
Stel dat je nog een tabel hebt met een veldnaam 'Naam'.
Dat krijg je dus problemen als je bijvoorbeeld een select doe.
(je kunt natuurlijk "Select P.Naam AS productnaam FROM tblProducten P" doen, maar ik pleit toch voor duidelijke namen en minder script)
Als je NOG een naam column hebt dan alias je er 1 of allebei. Het waarom erachter ligt besloten in het feit dat de resultset van een SELECT weer een entiteit is.

De hoeveelheid pleiters in deze thread wordt wel wat vermoeiend. Amper tabellen, weinig columns, minder script etc. Als jullie nu eens een goed boek gaan lezen over relationele modellen, dan is de volgende keer het gepleit niet nodig, want dan weet je dat wat je nu bepleit niet nuttig is.

De meest weirde prefixes verzinnen is bovendien onbenullig. Weet je waarom? Omdat wanneer je een entity renamed, je gigantisch zuur bent. Je zit dan opgescheept met prefixes gebaseerd op de entity in elke query die op die entity werkt. Veel plezier met het fixen van die namen. Oooooooh, je laat ze dan natuurlijk staan, die namen voor die velden, toch? :) ik HOOP het niet, maar WEET dat 99.9999% van de knutselaars aan de knoppen van veel software projecten er niet eens over peinzen om die prefixes dan te renamen.
Ook is het onderscheid in je script vaak niet duidelijk als je geen duidelijke veldnamen gebruikt.
Dus in een tabel 'Producten':
lngProductID
lngPr_CategorieID (sleutel naar lngCategorieID in tabel 'Categorieen')
txtPr_Naam
En in een tabel 'Categorieen':
lngCategorieID
txtCa_Naam
En dit is duidelijk? Mja... txtCa_Naam, ik weet het niet, maar dat is zo ongelovelijk om moeilijkheden vragen... type veranderd? uhoh... Categorie wordt gerenamed? Uhoh...

Als je dan je prefixes niet wijzigt (en het kost veel werk dus dat laat je geheid achterwege) zit je binnen no-time met niet-onderhoudbare rommel. Doe het dan vanaf het begin goed.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
Bedankt voor de links, ik zal deze dit weekend eens doornemen.
Voor de rest zal de huidige opbouw wel aan jouw eisen (kwa zoeken) voldoen
Heb je het dan over het design zoals ik deze beschreef in mijn eerste post of één van de suggesties?

Overigens zou ik best eens over dit onderwerp met wat mensen die gereageerd hebben willen chatten. Zitten jullie vaak op een bepaald kanaal?

Ik zal in ieder geval duidelijkere veldnamen gaan gebruiken. Ik zal snel weer een aangepast datamodel erop zetten zodat er weer wat concreter naar een eindresultaat kan worden gewerkt. Maar misschien heeft iemand al DE oplossing ;)

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
EfBe schreef op 09 april 2004 @ 12:57:
[...]

Niet? Ik heb een entiteit, bv Persoon. Die heeft attributes zoals 'Naam', 'Leeftijd' etc. Of ga jij alle attributes prefixen met 'Persoon' ? Indien ja, doe je dat ook bij bv Classes? De class Customer, heeft die ook velden als CustomerName, CustomerAddress etc?
Mjah, dat zijn voorkeuren vind ik. Een goeie (duidelijke) naamgeving is belangrijk, maar of dat veld nu 'Naam' heet, of 'Werknemernaam' doet er eigenlijk niet toe.

https://fgheysels.github.io/


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Wat betreft naamgeving is het vooral erg belangrijk dat je consequent, duidelijk en zo kort mogelijk bent.
Als je elke keer diep na moet denken over of moet gaan opzoeken wat voor naam je ook al weer aan een bepaalde kolom had gegeven dan ben je verkeerd bezig.

Het opnemen van de tabelnaam in alle kolomnamen vind ik dan persoonlijk overbodig en dat levert alleen maar extra typewerk op.
Alleen bij de primary key, die bij mij ongeveer altijd een autonumber kolom is, neem ik de tabelnaam op.
Hierdoor kunnen foreign keys aan beide kanten (meestal) dezelfde kolomnaam gebruiken.

Verder heb ik een bloedhekel aan underscores, spaties en al dat soort troep. Hoofdletters vind ik wel weer handig als ik maar niet verplicht ben om ze altijd te gebruiken (RDBMS case insensitive dus).

[ Voor 16% gewijzigd door cameodski op 09-04-2004 13:34 ]

Never underestimate the power of


Verwijderd

@EfBe

Op zich heb je wel een punt.

Maar ik verander nou niet zo snel mijn datamodel als mijn project is afgerond.
Bovendien werk ik met een config file zodat ik later alleen in mijn config de veldnamen hoef te wijzigen.

En het gaat inderdaad om voorkeuren.
Jij vind aliasses geven makkelijker, maar ik niet.
Ik heb liever korte queries.

Stel dat je een query hebt op 3 tabellen die zijn gekoppeld en je wilt ALLE gegevens ophalen. En die 3 tabellen hebben elk 20 velden.
Dan moet je enorm veel aliasses opgeven in je query. Dat vind ik meer werk dan wanneer ik mijn veldnamen anders benoem.

Maar het zijn voorkeuren en iedereen heeft zo zijn eigen manier.
Ik moet zeggen dat je me wel aan het denken zet en mijn manier zal zeker niet de beste zijn. En das toch de bedoeling van dit forum: dat mensen nadenken.
Ik zal zeker nadenken bij volgende projecten of de naamgeving anders moet dan ik momenteel doe.

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 26-05 11:18

alienfruit

the alien you never expected

EfBe schreef op 09 april 2004 @ 09:01:
Ik zou toch meer pleiten voor een NIAM/ORM model: http://www.orm.net.
Gratis ORM modeler voor windows:
http://www.microsoft.com/...39-4286-B8B6-7A9B84CFA709

Je modelt het model daarin en genereert dan de DDL Sql ermee.
Daz helemaal nie gratiz ge moet er Visio voor kopen :)

  • EfBe
  • Registratie: Januari 2000
  • Niet online
alienfruit schreef op 11 april 2004 @ 06:35:
[...]


Daz helemaal nie gratiz ge moet er Visio voor kopen :)
Sinds wanneer? Die tool werkt gewoon stand alone. Nix visio nodig.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op 09 april 2004 @ 14:25:
Ik heb liever korte queries.
Stel dat je een query hebt op 3 tabellen die zijn gekoppeld en je wilt ALLE gegevens ophalen. En die 3 tabellen hebben elk 20 velden.
Dan moet je enorm veel aliasses opgeven in je query. Dat vind ik meer werk dan wanneer ik mijn veldnamen anders benoem.
Iedere FK kun je schrappen, die is dubbel. Het valt wel mee hoeveel aliassen je moet opgeven dan. Wellicht hier en daar eentje.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
Ik heb MS VisioModeler gedownload en geinstalleerd. Ga nu eens kijken wat ik er allemaal mee kan.

Verwijderd

Topicstarter
Om iedereen op de hoogte te houden. Ik ben nu begonnen met het opzetten van de database en ben bezig met PHP en Mysql om het resultaat te krijgen wat ik wilde. Ik heb de structuur van mijn database nog iets aangepast maar niet veel.
Pagina: 1