necesito para modelar una idea que se pueden desglosar y el pensamiento de la siguiente manera:mejor enfoque para el almacenamiento de uno-muchos relación - Ejemplo práctico/Dilema
- BookDetails
- BookPrices
El problema aquí es que puede tener muchos precios para libros y es probable que estos precios cambien. Aquí hay un ejemplo
BookDetails: ----------------- ID Name 1 Harry Potter…
Esto es bastante fácil.
los casos en que es más interesante es que para éste libro que podría tener diez precios diferentes en ese día, por ejemplo:
BookPrices: ------------------------------------ Book_Details_Id Kind Price 1 SpecialOffer 10 1 BulkPurchase 20 1 Normal 30
necesito proporcionar una lista de libros y todos sus precios en columnas - algo como:
BookName SpecialOffer BulkPurchase Normal Harry Potter… 10 20 30
Mi pregunta es: ¿debería la tabla de precios del libro en realidad tener todos los tipos de precios diferentes como columnas? Para mí esto es feo y una mejor idea es tener cada precio como una fila
Si utilizo ese enfoque no puedo pensar en una consulta SQL para generarme el conjunto de resultados. He estado pensando en esto toda la mañana.
EDITAR: No tengo margen de maniobra para calcular los precios; tienen que almacenarse.
EDIT: Este es básicamente el appraoch 1-n que puedo pensar (Gracias a comentar a continuación) - Es lo que en realidad tenía en mente
SELECT book.bookid, bp1.price, bp2.price DE libro ÚNASE a bookprice bp1 JOIN bookprice bp2 ON bp1.bookid = book.bookid AND bp1.pricetype = 1 AND bp2.bookid = book.bookid AND bp2.pricetype = 2 ...
El problema es que por diez precios usted estará unir diez veces lo que huele mal!
¿Podría decirnos cuáles son los requisitos específicos y concretos para el esquema que está desarrollando? Algunas preguntas: ¿Necesita tener precios específicos por libro? ¿Habrá muchos tipos de ofertas? ¿Los tipos de oferta cambian con frecuencia? –
Tengo control sobre cómo representar esto: puedo elegir una tabla 1-n (que prefiero hacer) pero no puedo pensar cómo puedo recuperar todos los precios en columnas para un libro. La alternativa es tener cada tipo de precio en una tabla y tener una asignación de 1-1 –
Desea la capacidad de "** PIVOTAR **", que SQL Server no admite. SQL Server no puede generar columnas como esa. –