Estou criando um site onde as pessoas podem avaliar/avaliar bebidas alcoólicas ("Destilados"). Dado que algumas bebidas destiladas podem variar muito de garrafa para garrafa, gostaria que os usuários tivessem a opção de revisar a bebida em si ou optar por revisar uma garrafa específica dessa bebida.
Considere as tabelas (SQL Server) abaixo:
Spirits
+--------+------------------+
| Column | Type |
+--------+------------------+
| Id | uniqueidentifier |
| Name | nvarchar(255) |
+--------+------------------+
Bottles
+----------+------------------+
| Column | Type |
+----------+------------------+
| Id | uniqueidentifier |
| SpiritId | uniqueidentifier |
+----------+------------------+
Ratings
+----------+------------------------+
| Column | Type |
+----------+------------------------+
| Id | uniqueidentifier |
| SpiritId | uniqueidentifier |
| BottleId | uniqueidentifier, null |
| Score | int |
+----------+------------------------+
Estou me aproximando da Ratings
mesa corretamente? Em caso afirmativo, como faço para garantir que BottleId
é filho de SpiritId
?
Ou devo require SpiritId
or BottleId
, mas não ambos (e existe uma maneira de impor esse requisito no banco de dados?)
Tenho certeza de que uma pergunta como essa foi feita, mas estou tendo problemas suficientes para formulá-la sozinho, portanto, minhas tentativas de pesquisa não produziram nada de útil. Obrigado.