Necesito diseñar una tabla de clave/valor en mi base de datos y estoy buscando orientación sobre la mejor manera de hacerlo. Básicamente, necesito poder asociar valores a un conjunto dinámico de propiedades con nombre y aplicarlas a una clave externa.Pares clave/valor en una tabla de base de datos
Las operaciones que necesito para ser capaz de soportar son:
- Aplicar un par clave/valor a un grupo de elementos
- Enumerar todas las claves actualmente activas
- determinar todos los elementos que tienen un valor para una clave determinada
- Determine todos los elementos en los que el valor asociado con una tecla determinada concuerde con algunos criterios.
Parece que la forma más sencilla de hacer esto es definir una tabla:
CREATE TABLE KeyValue (
id int,
Key varchar...,
Value varchar...
);
Parece que estoy probable que sea la duplicación de una gran cantidad de datos en la columna de clave porque cualquier tecla dado es probable que se defina para una gran cantidad de documentos. Reemplazar la clave varchar con una búsqueda de enteros en otra tabla parece aliviar este problema (y hacer que sea significativamente más eficiente enumerar todas las claves activas), pero me limita el problema de mantener esa tabla de búsqueda (insistiendo en ella siempre que quiera) para definir una propiedad y potencialmente eliminar la entrada cada vez que se borre una clave/valor).
¿Cuál es la mejor manera de hacerlo?
posibilidades de que SHA1 colisionen son más o menos 0 en realidad, debe ser super malvado para causar colisiones, si está súper preocupado podría usar SHA256 –
personalmente he visto una colisión hash (TTH) en DC++, entonces es no imposible. – erikkallen