-
Het idee bij het ontwerpen van databases is om elk gegevenselement gescheiden te houden. En elk element heeft zijn eigen datatype, beperkingen en regels. Dat
c0002
is niet één veld, maar twee. Hetzelfde metXXXnnn
of wat dan ook. Het is onjuist en het zal uw vermogen om de gegevens te gebruiken en databasefuncties en faciliteiten te gebruiken ernstig beperken.Verdeel het in twee afzonderlijke gegevensitems:
column_1 CHAR(1)
column_2 INTEGERStel vervolgens AUTOINCREMENT in op
column_2
En ja, uw primaire sleutel kan
(column_1, column_2)
. zijn , dus je hebt niets verlorenc0002
heeft voor jou. -
Plaats leveranciers en klanten (wat "c" en "s" ook betekenen) nooit in dezelfde tabel. Als je dat doet, heb je geen databasetabel, maar een plat bestand. En verschillende problemen en beperkingen die daaruit voortvloeien.
Dat betekent:Normaliseer de gegevens. Je zult eindigen met:
- één tabel voor
Person
ofOrganisation
met de algemene gegevens (Name, Address
...) - één tabel voor
Customer
met klantspecifieke gegevens (CreditLimit
...) - één tabel voor
Supplier
met leverancierspecifieke gegevens (PaymentTerms
...) - geen dubbelzinnige of optionele kolommen, dus geen nulls
- geen beperkingen op gebruik of SQL-functies
.
En als u kolommen moet toevoegen, doet u dat alleen waar dat nodig is, zonder dat dit gevolgen heeft voor alle andere vervolgingen van het platte bestand. De reikwijdte van het effect is beperkt tot de reikwijdte van de verandering.
- één tabel voor