Pregunta

¿Qué es un beso (Keep It Simple, Stupid) manera de recordar lo Boyce-Codd forma normal es y cómo tomar una tabla sin normalizar y BCNF él?

Wikipedia 's Información:. No muy útil para mí

¿Fue útil?

Solución

definición de Chris fecha es bastante bueno, siempre y cuando usted entienda lo que quiere decir:

Cada atributo

Sus datos deben dividirse en atributos / columnas / valores separados y distintos, que no dependen de ningún otro atributo. Su nombre completo es un atributo. Su fecha de nacimiento es un atributo. Su edad no es un atributo, que depende de la fecha actual, que no es parte de su fecha de nacimiento.

debe representar un hecho

Cada atributo es un hecho, no una colección de hechos. Modificación de un bit en un atributo cambia todo el significado. Su fecha de nacimiento es un hecho. Es el nombre completo es un hecho? Pues bien, en algunos casos lo es, porque si cambia su apellido su nombre completo es diferente, ¿verdad? Pero a un genealogista que tiene un apellido y un nombre de familia, y si cambia su apellido su apellido no cambia, por lo que son hechos por separado.

acerca de la clave,

Un atributo es especial, es una clave. La clave es un atributo que debe ser único para toda la información de sus datos y nunca debe cambiar. Su nombre completo no es una clave, ya que puede cambiar. Su número de seguridad social no es una clave, ya que se reutilizan. Su SSN además de la fecha de nacimiento no es una clave, incluso si la combinación no puede ser reutilizado, ya que un atributo no puede ser una combinación de dos hechos. Un GUID es una clave. Un número que incrementar y nunca se vuelve a utilizar es una clave.

toda la clave,

La clave solo debe ser suficiente [ y necesaria !] Para identificar sus valores; no se puede tener los mismos datos representados por diferentes teclas, ni puede un subconjunto de las columnas de clave sea suficiente para identificar el hecho. Supongamos que tenemos una libreta de direcciones con una llave, nombre GUID y valores de dirección. Está bien tener el mismo nombre que aparece dos veces con diferentes claves si representan diferentes personas y no son los "mismos datos". Si Mary Jones en la contabilidad cambia su nombre por el de Mary Smith, Mary Jones en ventas no cambia su nombre también. Por otro lado, si Mary Smith y John Smith tienen la misma dirección de la calle y realmente es el mismo lugar, esto no está permitido. Hay que crear un nuevo par clave / valor con la dirección de la calle y una nueva clave.

Usted está tampoco permitido el uso de la clave de esta nueva dirección de la calle sola como un valor en la libreta de direcciones ya que ahora la misma clave dirección de la calle estaría representado dos veces. En su lugar, usted tiene que hacer un tercer par clave / valor con los valores de la clave de la libreta de direcciones y la tecla de dirección de la calle; a encontrar dirección de la calle de una persona, haciendo coincidir la llave de su libro y dirección de clave en este grupo de valores.

y nada más que la tecla

No debe haber nada que no sea la clave que identifica sus valores. Por ejemplo, si se le permite una dirección de "El Taj Mahal" (suponiendo que sólo hay una) no se le permite un valor de la ciudad en el mismo registro, ya que si se conoce la dirección usted también conocer la ciudad. Esto también abriría la posibilidad de que haya más de un Taj Mahal en una ciudad diferente. En su lugar, usted tiene que crear de nuevo una clave secundaria Ubicación con valores únicos como el Taj, la Casa Blanca en Washington DC, y así sucesivamente, y sus ciudades. O prohibir "direcciones" que son exclusivas de una ciudad.

Así que me ayude, Codd.

Otros consejos

He aquí algunos extractos útiles de la página de Wikipedia sobre Tercera Forma Normal :

Bill Kent define Tercera Forma Normal de esta manera:

  

Cada atributo no clave "debe proporcionar   un hecho acerca de la clave, la clave de todo,   y nada más que la tecla ".

     

Requerir que los atributos no clave sean   depende de "la clave de todo" asegura   que una tabla está en 2NF; promover, adicional   exigiendo que los atributos no clave sean   depende de "nada más que la tecla"   asegura que la tabla está en 3NF.

Chris Fecha adapta mnemotécnica de Kent para definir Boyce Codd-Forma Normal:

  

"Cada atributo debe representar un hecho   acerca de la clave, la clave de todo, y   nada más que la llave." Aquí el   requisito se ocupa de todas las   atributo en la tabla, no sólo   atributos no clave.

Esto entra en juego cuando una tabla tiene múltiples claves candidatas compuesto, y un atributo dentro de las teclas de un candidato tiene una dependencia en un parte de otra clave candidata. Tercera forma normal no prohíba tal, ya que excluye los atributos clave. Pero BCNF se aplica la regla de los atributos clave también.

En cuanto a cómo hacer una tabla satisfacer BCNF, es necesario para representar la dependencia adicional, con otro atributo y, posiblemente, por los atributos de la división en otra mesa.

I googled "forma normal Boyce Codd" y después de Wikipedia Este es el segundo resultado. Mi libro de texto da una definición muy simple en términos de sistemas de gestión de bases de datos relacionales:

  

El lado izquierdo de cada FD no trivial debe ser un superkey.

-. "Base de datos Sistemas de The Complete Book" de García-Molina, Ullman y Widom

La mejor respuesta informal que he leído es que, en BCNF, cada "flecha" en cada dependencia funcional es una "flecha" de una clave candidata. No recuerdo la fuente, pero era probablemente algo Chris Fecha escribió.

Básicamente Boyce-Codd es "forma normal quinta". Es visualmente reconocible por la existencia de "entidades atributivos" en el modelo de datos, para cosas como los tipos (papeles por ejemplo, el estado, el estado del proceso, de tipo ubicación, de tipo teléfono, etc). Los atributivas entidades (sub-subtipos) son listas de conjuntos finitos de valores que categorizan además una entidad de nivel clase. Lo que puede tener un tipo de teléfono ( 'móvil', 'escritorio', 'VoIP') Tipo de cuenta de correo electrónico ( 'negocio', 'personal', 'juego'), papel (director del proyecto, modelador de datos, super modelo), etc. . Otra pista morfológica es la existencia de super-tipos, (aka. Master-clases, super-clases, entidades-meta) como Partes (subtipos siendo la empresa, persona, etc.).

Se trata básicamente de Taxonomía ida salvaje (..no el video no es tan emocionante) al nivel de hoja atómica o; ver comentario de Bill Karwin arriba para una explicación más técnica.

modelos de nivel de Boyce-Codd son esencialmente muy detallado modelos lógicos, derivado de modelos conceptuales más simples basadas en negocios. ** en general no son implementadas ver batim en el modelo físico, porque la optimización PDM para el rendimiento (o simplicidad funcional) puede dar lugar a los super-tipos y entidades atributivas siendo gestionada como listas desplegables en las interfaces de usuario, o detrás de la lógica escenas en la solicitud, o en las limitaciones y los métodos de base de datos para hacer cumplir la integridad referencial. (Es decir, pueden terminar como tablas de consulta en el esquema PDM, o pueden ser manejados por código y que no están representados en la base de datos).

Por lo tanto - ¿por qué ellos si no pueden terminar en el PDM? Por la misma razón se construye un buen modelo 3NF antes de 'optimizar', por lo que la estructura de base de datos refleja el mundo real y es por lo tanto más estables que los kludges típicos que heredamos y tienen que hacer actos heroicos para hacer el trabajo como nuestros negocios / clientes requisitos cambian.

Muchas veces es más fácil de escuchar a su intestino y esto vendrá naturalmente. En términos generales, si cumple con 3NF que haya cumplido con BCNF. Esto no cubrir análisis detallado de un ERD o tienen ejemplos, pero hay trece reglas según las Codd. Me parece que es mejor seguir estas reglas, pero siempre recuerdo que no hay una forma correcta de hacer las cosas por lo que siguen en forma floja. Así que en cuanto a la RDBMS, aquí están las reglas:

http://www.87android.com / 12-reglas-de-relacional-base de datos modelo por codd /

Esto puede no responder a la pregunta directamente, pero si usted está planteando cómo llegar a BCNF o una manera fácil de recordar, entonces usted no entiende la normalización suficientemente bien. Eso no es una preocupación sin embargo. bases de datos relacionales toman muchas formas y muy pocos se hacen bien. Lo mejor que puede hacer es saber lo que significa ser relacional, sigue las reglas anteriores, y no se preocupe por el nivel de normalización. El proceso de normalización elimina la duplicación de datos. Cada nivel más por pasar a la migración de las dependencias funcionales. Tenga esto en cuenta y se le multa, el intestino y el intelecto harán el resto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top