Poñendo unha base de datos en segundo formulario normal
Durante o mes pasado, vimos varios aspectos de normalizar unha táboa de base de datos. En primeiro lugar, comentamos os principios básicos da normalización da base de datos. A última vez que exploramos os requisitos básicos establecidos pola primeira forma normal (1NF). Agora, imos continuar a nosa viaxe e cubrir os principios da segunda forma normal (2NF).
Recordemos os requisitos xerais de 2NF:
- Elimina os subconxuntos de datos que se aplican a varias filas dunha táboa e colócaos en táboas separadas.
- Cree relacións entre estas novas táboas e os seus predecesores mediante o uso de chaves estranxeiras.
Estas regras poden resumirse nunha sinxela afirmación: 2NF intenta reducir a cantidade de datos redundantes nunha táboa extraíndoa, colocándoa en novas táboas e creando relacións entre esas táboas.
Miremos un exemplo. Imaxina unha tenda en liña que mantén a información do cliente nunha base de datos. Poderían ter unha soa táboa chamada Clientes cos seguintes elementos:
- Custnum
- Nome
- Apelido
- Enderezo
- Cidade
- Estado
- ZIP
Unha breve ollada a esta táboa revela unha pequena cantidade de datos redundantes. Almacenamos as entradas "Sea Cliff, NY 11579" e "Miami, FL 33157" dúas veces cada unha. Agora, isto pode non parecer moito máis engadido de almacenamento no noso exemplo sinxelo, pero imaxina o espazo perdido se tivésemos miles de filas na nosa mesa. Ademais, se o código postal de Sea Cliff cambia, necesitaríamos facer ese cambio en moitos lugares da base de datos.
Nunha estrutura de base de datos 2NF, esta información redundante extraeuse e almacena nunha táboa separada. A nosa nova táboa (imos chamala ZIP) pode ter os seguintes campos:
- ZIP
- Cidade
- Estado
Se queremos ser super-eficientes, podemos incluso cubrir esta táboa con antelación: a oficina de correos ofrece un directorio de todos os códigos postais válidos e as súas relacións cidade / estado. Certamente, atopou unha situación onde se utilizou este tipo de base de datos. Alguén que tomou un pedido podería solicitarche o teu código postal primeiro e despois coñeces a cidade e estado desde onde estás chamando. Este tipo de arranxo reduce o erro do operador e aumenta a eficiencia.
Agora que eliminamos os datos duplicados da táboa Clientes, satisfámosche a primeira regra de segundo formulario normal. Aínda necesitamos usar unha tecla foránea para unir as dúas táboas. Usaremos o código postal (a chave primaria da táboa ZIP) para crear esa relación. Aquí está a nosa nova táboa Clientes:
- Custnum
- Nome
- Apelido
- Enderezo
- ZIP
Agora minimizamos a cantidade de información redundante almacenada na base de datos ea nosa estrutura está en segundo estado normal.
Se desexa garantir que a súa base de datos estea normalizada, explore os nosos outros artigos nesta serie:
- Basics da Normalización da Base de Datos
- Poñendo a súa base de datos en primeiro formulario normal
- Poñendo a súa base de datos en segundo formulario normal
- Poñendo a súa base de datos en terceiro formulario normal