我正在创建一个网站,人们可以在其中对酒类(“烈酒”)进行评分/评论。鉴于某些烈酒在不同瓶子之间可能存在很大差异,我希望用户可以选择评论烈酒本身,或者他们可以选择评论该烈酒的特定瓶子。
考虑下面的表 (SQL Server):
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 |
+----------+------------------------+
我是否Ratings
正确接近桌子?如果是这样,我如何强制它BottleId
是 的孩子SpiritId
?
或者,我应该要求SpiritId
or BottleId
,但不能同时要求两者(有没有办法在数据库中强制执行此要求?)
我确信已经有人问过这样的问题,但我自己在表达它时遇到了足够的麻烦,因此我的搜索尝试没有产生任何有用的结果。谢谢。