【发布时间】:2020-09-17 14:50:22
【问题描述】:
我对数据库逻辑比较陌生,我正在尝试弄清楚多个表应该/不应该如何相互引用。
我有一个表“书”,它应该有列:
| 'title' | 'genre' | 'author' | 'buyOption' | 'pubDate'
- 我希望每本书都有可能拥有一种或多种类型。
- 我希望每本书都有可能拥有一位或多位作者。
- 我希望每本书都有一个或多个购买选项('buyOption')。
- 并且每本书的每个购买选项(亚马逊、沃尔玛等)都有一个唯一的网址。
我认为有道理的地方(请纠正我的错误):
__________________________
| |
| Book |
|________________________|
|Primary Key | book_id | //seems redundant (same as title_id)...would like to just use title_id, but idk if that's possible
|------------|-----------|
|Foreign Key | title_id | <--------------------------------------------|
|Foreign Key | bo_id | <----------------------------------| |
|Foreign Key | genre_id | <--------------------------| | |
|Foreign Key | author_id | <-------------------| | | |
| - - - - - | - - - - - | | | | |
| | pubDate | //publish date | | | |
|________________________| | | | |
| | | |
| | | |
| | | |
__________________________ | | | |
| | | | | |
| Authors | | | | |
|________________________| | | | |
|Primary Key | author_id |------------------| | | |
|------------|-----------| | | |
|--->|Foreign Key | title_id | | | |
| | - - - - - | - - - - - | | | |
| | | author | | | |
| |____________|___________| | | |
| | | |
| | | |
| __________________________ | | |
| | | | | |
| | Genres | | | |
| |________________________| | | |
| |Primary Key | genre_id |-------------------------| | |
| |------------|-----------| | |
|--->|Foreign Key | title_id | | |
| | - - - - - | - - - - - | | |
| | | genre | | |
| |____________|___________| | |
| | |
| __________________________ | |
| | | | |
| | Buy Options | | |
| |________________________| | |
| |Primary Key | bo_id |---------------------------------| |
| |------------|-----------| |
|--->|Foreign Key | title_id | |
| | - - - - - | - - - - - | |
| | | buyBrand | //(Walmart, Amazon, etc.) |
| | | buyUrl | //(ex: https://www.amzn.com/buyBook1) |
| |____________|___________| |
| |
| |
| |
| __________________________ |
| | | |
| | Title | |
| |________________________| |
|---------|Primary Key | title_id |--------------------------------------|
|------------|-----------|
| | title |
|____________|___________|
有标题表有意义吗?如果是这样,我可以使用它的主键来填充其他各种表吗,如图所示?
如果“购买选项”表将为每本书提供一堆不同的选项和关联的网址,是否可以直接从“书籍”主表中获取 buyBrand 和 buyUrl?最后,我只想要一个可以从中获取单元格数据的巨型表格。现在我正试图弄清楚如何用我的数据填充表格,以及为每条数据填充哪些表格。
(再次强调,我是数据库逻辑的新手,如果我的措辞难以理解,我深表歉意)
【问题讨论】:
-
FK 是表中的一组列,其子行值在另一个列中出现一次,即参与一个关系(船舶)/关联,而这些列参与另一个列。与所有其他类型的约束(包括 PK 和基数)一样,只要其他声明未暗示 FK 约束,就会声明 FK 约束。它们用于 DBMS 实现完整性,不需要记录或查询。
-
您认为这里的合理答案是什么?现在你只是要求我们用定制的教程重写一本教科书。是时候关注已出版的关于信息建模、关系模型和数据库设计的学术教科书了。 (记录和使用设计的语言和工具的手册不是这样的教科书。)(维基文章或网络帖子也不是。)问一个特定的研究过的非重复问题。
标签: sql database database-design foreign-keys many-to-many