-
Tanken med databasdesign är att hålla varje dataelement separat. Och varje element har sin egen datatyp, begränsningar och regler. Den där
c0002är inte ett fält, utan två. Samma medXXXnnneller vad som helst. Det är felaktigt och det kommer att kraftigt begränsa din förmåga att använda data och använda databasfunktioner och -faciliteter.Dela upp det i två diskreta dataobjekt:
column_1 CHAR(1)
column_2 INTEGERStäll sedan in AUTOINCREMENT på
column_2Och ja, din primära nyckel kan vara
(column_1, column_2), så du har inte förlorat någon mening medc0002har för dig. -
Placera aldrig leverantörer och kunder (vad "c" och "s" än betyder) i samma tabell. Om du gör det kommer du inte att ha en databastabell, du kommer att ha en platt fil. Och olika problem och begränsningar till följd av det.
Det betyder, normalisera data. Du kommer att sluta med:
- en tabell för
PersonellerOrganisationsom innehåller de vanliga uppgifterna (Name, Address...) - en tabell för
Customersom innehåller kundspecifik data (CreditLimit...) - en tabell för
Suppliersom innehåller leverantörsspecifik data (PaymentTerms...) - inga tvetydiga eller valfria kolumner, därför inga nollor
- inga begränsningar för användning eller SQL-funktioner
.
Och när du behöver lägga till kolumner gör du det bara där det krävs, utan att påverka alla andra stämningar i den platta filen. Effektens omfattning är begränsad till förändringens omfattning.
- en tabell för