Aheo pregunta si es ok to have a table with just one column. ¿Qué tal uno sin columnas, o, dado que esto parece difícil de hacer en la mayoría de los DBMS modernos "relacionales", una relación sin atributos?Relaciones sin atributos
Respuesta
DEE y el producto cartesiano forman un monoide. En la práctica, si tiene el operador de resumen relacional de Date, usaría DEE como su relación de agrupación para obtener los grand-totals. Hay muchos otros ejemplos en los que DEE es prácticamente útil, p. en un entorno funcional con un operador de combinación binaria, obtendría n-ary join = foldr join dee
Una tabla con una sola columna es un conjunto: siempre que no le importe ordenar los valores o asociar cualquier otra información con ellos, parece correcto. Puede verificar su membresía, y básicamente eso es todo lo que puede hacer. (Si no tiene una restricción UNIQUE
en la columna individual, supongo que también podría contar el número de ocurrencias ... un multiset).
Pero, ¿qué en llamas sería una tabla sin columnas (o una relación sin atributos) significa - o, ¿cómo sería algo bueno ?!
Lo que significa y si sería o no algo bueno son dos cosas completamente diferentes ... –
Y es por eso que hago ambas preguntas (acompañado por un quirófano también ;-) - si alguna de las preguntas tiene una buena respuesta, quiero escucharlo! -) –
Ah, ahora tengo que revelar el secreto. :-) Significa que la relación (o "tabla") contiene una sola tupla válida (o "fila") o no. Es el tipo de relaciones booleanas. –
Hm. Entonces me llegó la falta de "ejemplos del mundo real" y lo intenté lo mejor posible. ¡Quizás sorprendentemente, llegué a mitad de camino!
cjs=> CREATE TABLE D(); CREATE TABLE cjs=> SELECT COUNT (*) FROM D; count ------- 0 (1 row) cjs=> INSERT INTO D() VALUES(); ERROR: syntax error at or near ")" LINE 1: INSERT INTO D() VALUES();
Me he dado cuenta de que algunos sistemas de bases de datos no tolerarán la instrucción 'CREATE' sin columnas, y algunos lo hacen, pero luego no toleran la declaración' INSERT' de valor cero. – seh
Existen exactamente dos relaciones sin atributos, una con una tupla vacía y otra sin ella. En The Third Manifesto, Date y Darwen (un tanto) los nombran jocosamente TABLE_DEE
y TABLE_DUM
(respectivamente).
Son útiles en la medida en que son la identidad de una variedad de operadores relacionales, jugando papeles equivalentes a 1 y 0 en álgebra ordinaria.
Una tabla con una sola columna tendría sentido como una simple búsqueda. Supongamos que tiene una lista de cadenas sobre las que desea filtrar para el texto ingresado por el usuario. Esa tabla almacenaría las palabras que quisiera filtrar.
Pero esa es una tabla con una columna más que la que no tiene columnas, que es la de interés aquí. Aún así, has descubierto la idea de un predicado en un mundo relacional, que es bueno. –
"Hay exactamente dos relaciones sin atributos, una con una tupla vacía y la otra sin. En The Third Manifesto, Date y Darwen (un tanto) los nombran humorísticamente TABLE_DEE y TABLE_DUM (respectivamente).
Son útiles en la medida en que son la identidad de una variedad de operadores relacionales, jugando un papel equivalente a 1 y 0 en álgebra ordinaria. "
Y, por supuesto, también desempeñan el papel de "VERDADERO" y "FALSO" en el álgebra de Boole. Lo que significa que son útiles cuando las proposiciones tales como "La tienda está abierta" y "La alarma está configurada" deben representarse en una base de datos.
Una consecuencia de esto es que también se pueden emplear de forma útil en cualquier expresión del álgebra relacional para sus propiedades de "actuar como IF/ELSE": unirse a TABLE_DUM significa no retener tuplas en absoluto del otro argumento, unirse a TABLE_DEE significa retenerlos a todos. Entonces, unir R a un relvar S que puede ser igual a TABLE_DEE o TABLE_DUM, es el equivalente de RA de "si S luego R else FI", y FI significa la relación vacía.
Es difícil ver la utilidad de TABLE_DEE y TABLE_DUM desde la perspectiva de la base de datos SQL. Después de todo, no está garantizado que su proveedor de db favorito le permita crear uno u otro.
También es difícil ver la utilidad de TABLE_DEE y TABLE_DUM en álgebra relacional. Uno tiene que mirar más allá de eso.Para darte un sabor de cómo estas constantes pueden cobrar vida, considera el álgebra relacional puesta en forma matemática adecuada, que sea lo más cercana posible al álgebra de Boole. D & D Algebra A es un paso en esta dirección. Entonces, uno puede expresar operaciones clásicas de álgebra relacional a través de otras más fundamentales y esas dos constantes se vuelven realmente útiles.
- 1. Atributos en relaciones Muchos a Muchos (Hibernar)
- 2. RestKit relaciones de correspondencia objeto sin KVC
- 3. SQL une dos tablas sin claves/relaciones
- 4. Extraiga los atributos del código fuente de C# sin Reflection
- 5. Cómo actualizar los atributos sin validación
- 6. Jade: atributos de elemento sin valor
- 7. Setter en la Unidad sin atributos
- 8. Linq a SQL sin relaciones explícitas de clave externa
- 9. patrón y relaciones dao
- 10. Relaciones genéricas de muchos a
- 11. relaciones calificadas en dactic
- 12. Cómo almacenar relaciones bidireccionales
- 13. IDbSetExtensions.AddOrUpdate y relaciones
- 14. MongoDB, Grails y relaciones
- 15. Pedido dropDownList utilizando relaciones?
- 16. Rails incluye relaciones anidadas
- 17. stdout y stdin relaciones
- 18. carriles - relaciones padre/hijo
- 19. Yii múltiples relaciones
- 20. HABTM relaciones con ActiveRecord
- 21. NSPredicar a muchas relaciones
- 22. NSFetchedResultsController y NSOrderedSet relaciones
- 23. ¿Se pueden aplicar aspectos en PostSharp sin usar atributos?
- 24. Establecer DataContract y DataMember sin todos los atributos
- 25. Tipos sin cadenas en los atributos de la directiva AngularJS
- 26. Accediendo a un elemento sin atributos en Watir
- 27. Ruby on Rails 3 - a_json sin incluir todos los atributos
- 28. DataContractSerializer: cómo serializar clases/miembros sin atributos DataContract/DataMember
- 29. vista parcial sin atributos de validación (ASP.NET MVC 3)
- 30. búsqueda de atributos Python sin ningún descriptor mágico?
¿Qué significa eso? "¿Qué es una relación sin atributos?" ¿Puedes dar algún tipo de ejemplo del mundo real? –
Creo que el problema es que no hay ejemplos del mundo real ... – jerryjvl
"CREATE TABLE dee()" seguido de "INSERT INTO DEE VALUES()" debería hacer el truco, si su DBMS es realmente relacional. –