-
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 medXXXnnn
eller 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_2
Och ja, din primära nyckel kan vara
(column_1, column_2)
, så du har inte förlorat någon mening medc0002
har 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
Person
ellerOrganisation
som innehåller de vanliga uppgifterna (Name, Address
...) - en tabell för
Customer
som innehåller kundspecifik data (CreditLimit
...) - en tabell för
Supplier
som 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