-
Ideen i databasedesign er at holde hvert dataelement adskilt. Og hvert element har sin egen datatype, begrænsninger og regler. Det
c0002
er ikke ét felt, men to. Det samme medXXXnnn
eller hvad som helst. Det er forkert, og det vil i høj grad begrænse din mulighed for at bruge dataene og bruge databasefunktioner og -faciliteter.Del det op i to diskrete dataelementer:
column_1 CHAR(1)
column_2 INTEGERIndstil derefter AUTOINCREMENT på
column_2
Og ja, din primære nøgle kan være
(column_1, column_2)
, så du har ikke mistet betydningenc0002
har til dig. -
Placer aldrig leverandører og kunder (uanset hvad "c" og "s" betyder) i samme tabel. Hvis du gør det, vil du ikke have en databasetabel, du vil have en flad fil. Og forskellige problemer og begrænsninger som følge af det.
Det betyder, Normaliser dataene. Du vil ende med:
- én tabel for
Person
ellerOrganisation
indeholdende de almindelige data (Name, Address
...) - én tabel for
Customer
indeholdende kundespecifikke data (CreditLimit
...) - én tabel for
Supplier
indeholdende leverandørspecifikke data (PaymentTerms
...) - ingen tvetydige eller valgfrie kolonner, derfor ingen nuller
- ingen begrænsninger for brug eller SQL-funktioner
.
Og når du skal tilføje kolonner, gør du det kun, hvor det er påkrævet, uden at det påvirker alle de andre sager i den flade fil. Effektens omfang er begrænset til ændringens omfang.
- én tabel for