met*_*jus 6 sql postgresql foreign-keys
我有以下概念性问题,我还没有找到令人满意的解决方案。我将用一个例子来解释它。
我有 2 个表cats和dogs,它们由不同的属性组成(它们需要是不同的表,因为我的实际情况实际上更复杂)。我可以喂养这些“动物”,并且我想跟踪有关此喂养操作的一些信息(例如[animal_fed],,,,,food_type... )。food_quantitydate
现在我正在使用feeds具有以下模式的表:animal_id INTEGER, table_name VARCHAR(50)(可能是"cats"或"dogs",但会有更多的物种..),[other fields]。
我对这个解决方案完全不满意,因为它使检索有关被喂养的动物的一些信息变得很痛苦(如果可能的话,但必须有一种方法..)select from feeds(类似于join)。
我怎样才能更好地解决这个问题?
使用“父”表是一个好的解决方案吗?
或者,如果您认为我的实际方法很好,我怎样才能"join"获得所有feeds信息加上动物name?
谢谢。
有多种方法可以改进它,但您的解决方案几乎很好:
animals表将包含两个表中的所有列。您将拥有animal_type狗或猫的列。FROM animals WHERE id IN ( ANIMAL_ID_FROM_PREVIOUS_RESULT )。然后您必须将它们合并到您的应用程序中。animals表 anefeeds表并创建r_dog_feed和r_cat_feed。他们将有feed_idwhich 将引用feeds表,然后要么dog_id要么cat_id。然后你可以使用UNION编写 SQL :SELECT dogs.name 作为名称、食物。* FROM r_dog_feed JOIN dogs ON dogs.id = r_dog_feed.dog_id JOIN feeds ON feeds.id = r_dog_feed.feed_id UNION SELECT cats.name 作为名称、食物。* FROM r_cat_feed JOIN catsSON dogs.id = r_cat_feed.cat_id JOIN feeds ON feeds.id = r_cat_feed.feed_id
| 归档时间: |
|
| 查看次数: |
7319 次 |
| 最近记录: |