-
A ideia no design de banco de dados é manter cada elemento de dados separado. E cada elemento tem seu próprio tipo de dados, restrições e regras. Essec0002
não é um campo, mas dois. O mesmo comXXXnnn
como queiras. É incorreto e limitará severamente sua capacidade de usar os dados e usar os recursos e recursos do banco de dados.
Divida-o em dois itens de dados discretos:column_1 CHAR(1)
column_2 INTEGER
Em seguida, defina AUTOINCREMENT emcolumn_2
E sim, sua chave primária pode ser(column_1, column_2)
, então você não perdeu o significadoc0002
tem para você.
-
Nunca coloque fornecedores e clientes (seja qual for o significado de "c" e "s") na mesma tabela. Se você fizer isso, você não terá uma tabela de banco de dados, você terá um arquivo simples. E vários problemas e limitações decorrentes disso.
Isso significa normalizar os dados. Você vai acabar com:
- uma tabela para
Person
ouOrganisation
contendo os dados comuns (Name, Address
...) - uma tabela para
Customer
contendo dados específicos do cliente (CreditLimit
...) - uma tabela para
Supplier
contendo dados específicos do fornecedor (PaymentTerms
...) - sem colunas ambíguas ou opcionais, portanto, sem Nulos
- sem limitações de uso ou funções SQL
.
E quando você precisar adicionar colunas, faça isso apenas onde for necessário, sem afetar todos os outros processos do arquivo simples. O escopo do efeito é limitado ao escopo da mudança.
- uma tabela para