Quer você tenha um pequeno espaço livre no banco de dados ou um grande site de comércio eletrônico, é muito necessário que o banco de dados projete razoavelmente a estrutura da tabela e faça uso total do espaço. Isso exige que tenhamos um entendimento completo e uma aplicação razoável dos tipos de dados comuns em sistemas de banco de dados. A seguir apresentaremos algumas experiências e vivências, na esperança de ajudá-lo a pensar de forma mais racional na hora de construir um banco de dados.
1. Tipo de número
Os tipos numéricos são divididos em três categorias de acordo com meu método de classificação: tipos inteiros, tipos decimais e tipos numéricos.
O que chamo de “classes numéricas” refere-se a DECIMAL e NUMERIC, que são do mesmo tipo. Não é estritamente um tipo numérico, pois na verdade eles armazenam números na forma de strings; cada dígito de seu valor (incluindo a vírgula decimal) ocupa um byte de espaço de armazenamento, portanto esse tipo consome grande espaço para comparação. Porém, uma de suas vantagens marcantes é que os dígitos decimais são fixos e não serão "distorcidos" durante as operações, por isso é mais adequado para campos como "preço" e "valor" que não exigem alta precisão, mas exigem muito alta precisão.
O tipo decimal, ou seja, o tipo número de ponto flutuante, possui dois tipos, FLOAT e DOUBLE, dependendo da precisão. Sua vantagem é a precisão. FLOAT pode representar decimais com valores absolutos muito pequenos, tão pequenos quanto cerca de 1,17E-38 (0,000...0117, há 37 zeros após a vírgula decimal), enquanto DOUBLE pode representar valores absolutos tão pequenos. como aproximadamente 2,22E-308 (0,000...0222, 307 zeros após a vírgula decimal) como um decimal. O espaço de armazenamento ocupado pelo tipo FLOAT e pelo tipo DOUBLE é de 4 bytes e 8 bytes respectivamente. Se você precisar usar campos decimais e a precisão não for alta, é claro que use FLOAT. Mas, para ser honesto, como nossos dados "civis" podem exigir uma precisão tão alta? Até agora, não usei esses dois tipos - não encontrei nenhum caso adequado para usá-los.
O tipo mais utilizado, e mais digno de cálculo cuidadoso, é o tipo inteiro. Do TINYINT, que ocupa apenas um byte de espaço de armazenamento, ao BIGINT, que ocupa 8 bytes, a escolha de um tipo que seja "suficiente" e ocupe o menor espaço de armazenamento deve ser considerada ao projetar o banco de dados. TINYINT, SMALLINT, MEDIUMINT, INT e BIGINT ocupam espaço de armazenamento de 1 byte, 2 bytes, 3 bytes, 4 bytes e 8 bytes respectivamente. Quanto aos inteiros não assinados, os inteiros máximos que esses tipos podem representar são respectivamente 255, 65535, 16777215. , 4294967295 e 18446744073709551615. Se for usado para salvar a idade do usuário (por exemplo, não é aconselhável salvar a idade no banco de dados), TINYINT é suficiente; no "Zongheng" de Jiucheng, SMALLINT é suficiente para cada valor de habilidade se você quiser usar Make; o campo IDENTIFY de AUTO_INCREMENT em uma tabela que definitivamente não excederá 16.000.000 linhas. Claro, use MEDIUMINT em vez de INT. Imagine que cada linha salva 16.000.000 linhas.