DB: diseño miembros tabla separada o todos en una mesa?
-
23-08-2019 - |
Pregunta
Quiero crear una mesa de amigos con información personal e inicie sesión en detalles.
Lo mejor separar los miembros de la mesa a 2 mesas, uno contienen detalles mínimos, segundos con otros detalles.
o permanecer en una mesa?
tengo una gran cantidad de tablas que contienen la clave externa del miembro.
Solución
Depende mucho de lo que esos "otros" son detalles. Esta es una pregunta común e interesante, y no hay una respuesta "fuerte y rápido" a primera vista. Pero si pensamos en el problema de manera más abstracta, acerca de la relación real entre los atributos ( "datos") de cualquier cosa en particular que desea representar, podemos encontrar un poco de claridad.
En su pregunta que indicar que los amigos tienen "mínimos" y "otros", detalla. En lugar de la clasificación de estos datos como "mínimo" o "otro", vamos a clasificarlos en función de si o no cualquier individuo ( "atómica") detalle puede ser determinada totalmente por lo que hace que un amigo único.
supongo que hay algo de clave primaria (PK), al igual que friendid o dirección de correo electrónico o algo así. Teniendo en cuenta este identificador único, pregúntese: "Si me dan exactamente un friendid (o e-mail o lo que sea que está utilizando como PK) lo detalles de ese amigo soy yo absolutamente seguro de, por ejemplo, dado friendid = 2112, estoy totalmente? saber en primer lugar el nombre de ese amigo, apellido y fecha de nacimiento, pero no absoluta certeza el número de teléfono de ese amigo porque hay más de uno de ellos.
Grupo juntos en una mesa todos los detalles que sin ambigüedades sabe le da la PK. Ponga los detalles para el que necesita más datos (como "en casa" o "trabajo" en el caso de los números de teléfono) en las tablas de "niños", de vuelta a la mesa "padres" en el PK de la carrocería exterior. (Nota: Es muy probable que el PK de la tabla secundaria sea compuesto, esto es, compuesta de PK de la tabla primaria y el factor diferenciador (como "en casa" o "trabajo" en este ejemplo) claves compuestas por los muchos lados. del 1-M relaciones son muy buenas.)
frikis base de datos llaman a esta descomposición basada en la dependencias funcionales .
Otros consejos
Una mesa, menos que potencialmente necesita asociar un miembro de varios conjuntos de datos (es decir, múltiples direcciones de correo electrónico, grupos de usuarios, el día de teléfono, noche-teléfono, teléfono celular, etc.) .
No hay duda al respecto:. Siempre divide tablas cuando tiene sentido lógicamente
Por ejemplo: Amigo 1: Tom Jones vive en El Valle Amigo 2: Erin Jones vive su demasiado ya que es su hermano
tablas:
Friends Id Name Address 1 Tom Jones 1 2 Erin Jones 1 Adresses Id Address 1 The valley
De lo contrario las cosas siempre se van a plantear como:
Friends Id Name Address 1 Tom Jones The Valey 2 Erin Jones The Valley
lo que conducirá a las preguntas erróneas.
Eso es sólo un problema, hay numerosos. Al igual que lo que si es así tiene 2 direcciones de correo electrónico y 3 números de teléfono celular? ¿Qué pasa si un StreetName cambios y 5 amigos viven en él?
Si está muy seguro de su mesa será pequeño, y usted no tiene que consultarlo, lo que se podría usar una sola mesa. Pero de lo que sólo puede utilizar algunos Excell como sw también, o un pedazo de papel para el caso: -)
Sin embargo, si usted quiere tener una base de datos, lo tratan como una sola.
Normalización de todo el tema.