Rotterdammertje schreef op vrijdag 03 februari 2012 @ 09:59:
Dat jij het vertikt, en geen probleem hebt met generieke kolomnamen, wil niet zeggen dat het onzin is. Dat wil zeggen dat jouw voorkeur ergens anders naar uitgaat. Wat als je nu bij je reserveringen ook een aanmaakdatum en een wijzigdatum wil opslaan? Of een afzegdatum? Dan kan je al je code doorlopen om alsnog je generieke 'date' kolom om te gaan zetten naar 'reservation_date' -- of 'visit_date' of zo, om aan te geven dat het de datum is waarop de gasten langskomen.
Afgezien van technische problemen, is er ook een semantisch probleem: als ik een kolom 'date' zie in een tabel 'reservering', dan weet ik niet wat de betekenis van die datum is. Is dat de datum waarop de reservering is aangemaakt, afgezegd of gewijzigd? Of toch echt de bezoekdatum?
Reserveringen was misschien niet 't beste voorbeeld, granted, maar soms is een date gewoon een date. Evenals dat soms een order gewoon een order is -> `order` tabel. Mijn punt was dat je
toch consequent moet escapen want je weet niet wat toekomstige versies aan 'reserved words' gebruiken. En zolang je (of je DAL, ORM, whatever) consequent escaped hoef je nooit in te zitten over reserved words

AFAIK begrijpt ieder zichzelf respecterend RDBMS deze notatie. Correct me if I'm wrong.
Ik hoop inderdaad dat mijn collega's competent zijn ja

Rotterdammertje schreef op vrijdag 03 februari 2012 @ 09:59:
Door date functies te gebruiken, maak je de betekenis expliciet. En dat wil niet zeggen dat je dan geen gebruik kan maken van ISO8601! Maar maak dan een functie 'DateFromISO8601', die een string in ISO formaat omzet naar een datum. Ook dan maak je expliciet duidelijk wat er gebeurt, in plaats van impliciet aan te nemen dat de database, en de ontwikkelaars na jou, begrijpen dat datums in ISO formaat moeten worden aangeleverd.
Of je gebruikt parameterized queries, of 101 andere oplossingen. Soms moet je gewoon een string-representatie van een datum hebben die iedereen begrijpt en dan is ISO8601 de enige eenduidige standaard die (
haast...) niet verkeerd te interpreteren is. Ikzelf ben iig nog nooit yyyy-dd-mm tegen gekomen.
Als je programma opeens op een andere locale draait (tussen de serialisatie en deserialisatie) bij een klant die een nl-NL systeem heeft terwijl je op en-US hebt ontwikkeld (of andersom) of... ga je de mist in als je niet expliciet bent. Dus ja, bij (de)serialisatie zul je ook expliciet moeten zijn in het formaat ja. En soms heb je helemaal niets te vertellen over serialized data: die krijg je gewoon van partij X of Y aangeleverd en dan is 't zoals 't is. Je kunt dan wel 'vertrouwen' op Date.Parse('04/03/2011') maar ik ben toch liever iets explicieter in wat dan de maand is en wat de dag

Mijn hele point being: 1) escapen 2) expliciet zijn 3) zo veel mogelijk naar 'standaarden' sturen die niet (lastig...) verkeerd te interpreteren zijn.
Having said that, ik denk dat we aardig op 1 lijn zitten en die "onzin" was misschien wat krachtiger dan bedoeld. My bad.
[
Voor 11% gewijzigd door
RobIII op 03-02-2012 11:06
]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij