La relación uno a uno generalmente se puede almacenar en la misma tabla. ¿Hay razones para no almacenarlos en la misma tabla?En SQL/MySQL, ¿hay razones para no poner una relación uno a uno en la misma tabla?
Respuesta
Número y tipo de columnas. Hay un límite en el tamaño de las columnas en una tabla. Ver here. Hay un máximo de 8,060 bytes por fila.
Las tablas muy grandes también pueden afectar el rendimiento y pueden ser difíciles de optimizar e indexar bien.
Esto es aparte de mantener los datos conceptualmente diferentes, aparte uno de otro. Por ejemplo, un país y una moneda tienen una relación de 1 a 1 (ejemplo ilustrativo, sé que este no es siempre el caso). Todavía no los mantendría juntos.
Encontrará información acerca de cuándo es útil para crear uno-a-uno relaciones bajo http://onlamp.com/pub/a/onlamp/2001/03/20/aboutSQL.html
Lo más importante es el siguiente:
El indicador clave de una posible necesidad de una relación de uno a uno es una tabla que contiene campos que son que solo se usan para un cierto subconjunto de los registros en esa tabla.
He hecho esto para evitar el bloqueo/bloqueo, coloque las columnas pesadas de lectura en una tabla las columnas pesadas de actualización en otra, funcionó como un amuleto. Una gran cantidad de grandes transacciones de actualización de grasa fueron ralentizando un montón de lecturas.
Las relaciones de uno a cero son comunes y están vinculadas desde el opcional al obligatorio; el ejemplo dado en http://onlamp.com/pub/a/onlamp/2001/03/20/aboutSQL.html es de este tipo, no uno a uno. Las relaciones tipo/subtipo pueden implementarse de esta manera.
relaciones uno a uno se producen cuando cada uno representa una entidad clara, significativa, que en un contexto diferente puede estar en una relación diferente y donde un pequeño cambio en los requisitos puede cambiar la cardinalidad de la relación. Es arbitrario con qué enlaces, por lo que es mejor elegir uno para que sea opcional y convertir uno a cero o uno.
- 1. relación uno a uno en MySQL
- 2. Relación uno-a-uno genérica en Django
- 3. sqlalchemy: relación uno a uno con declaración
- 4. Relación JPA Hibernate uno a uno
- 5. Grails/GORM: creando una relación opcional uno a uno
- 6. HQL con cheque nulo para uno-a-uno relación
- 7. Cómo usar Entity Framework 4.1 Código Primero para forzar una relación de uno a uno para una relación uno a muchos en la base de datos
- 8. Uno a cero/uno la relación (Código primero)
- 9. ¿Cuáles son las ventajas de utilizar una relación de tabla uno a uno? (MySQL)
- 10. Uno-A-Muchos Relación con la tabla de unión
- 11. Asociación uno a uno en la forma?
- 12. Crear automáticamente un formulario usando entidad (relación uno a uno)
- 13. JPA: debería almacenar un BLOB en la misma tabla con fetch Lazy o debería almacenarlo en otra tabla y buscar la relación uno a uno.
- 14. CodeIgniter/Datamapper: Dos relaciones de uno a muchos para la misma tabla que no funciona
- 15. En una relación uno a uno, ¿debo soltar una de las columnas de identificación de la tabla?
- 16. Hibernar: Especificar columnas en una relación uno a varios
- 17. django relación uno a muchos
- 18. MySQL Unir sintaxis para una relación de uno a muchos
- 19. AutoMapper relación uno a muchos
- 20. SSAS Relación dimensional de uno a muchos
- 21. Cómo utilizar ELIMINAR EN CASCADA en la relación uno a uno
- 22. ¿Cómo configurar una relación uno a muchos?
- 23. entidad Código Marco Primera relación uno a uno
- 24. Configuración de NHibernate para la relación uno a varios unidireccional
- 25. CoreData - modelada relación uno-a-muchos salga como uno-a-uno
- 26. NHibernate uno-a-uno vs 2 muchos-a-uno
- 27. JPA - Persistiendo en una relación de Uno a Muchos
- 28. uno a muchos con una tabla
- 29. ¿Cómo puedo tener una relación uno-a-uno opcional en GORM?
- 30. Cómo expresar una relación Uno a Muchos en Django
Las tablas que son demasiado anchas también pueden tener un acceso más lento. – HLGEM
@HLGEM - Muy cierto. Agregado a la respuesta :) – Oded
el límite de 8060 bytes por fila era un límite VIEJO del Servidor SQL. esto funciona en SQL Server 2005: 'create table big_row (a varchar (5000), b varchar (5000), c varchar (5000), d varchar (5000), e varchar (5000), f varchar (5000), g varchar (5000), h varchar (max)); insertar en valores de big_row (replicar ('A', 5000), replicar ('B', 5000), replicar ('C', 5000), replicar ('D', 5000), replicar ('E', 5000), replicar ('F', 5000), replicar ('G', 5000), replicar ('H', 10000)) 'Su enlace es para SQL Server, de todos modos pensé que la pregunta era sobre MySql. Sin embargo, su parte acerca de las tablas grandes (supongo que quiere decir anchura, y no filas) es correcta. –