noi*_*isy 4 sql database database-design relational-database
让我们假设我有N个书店用于N书店.我必须在每个书店的单独表中保存有关书籍的数据,因为每个表都有不同的方案(列的数量和类型不同),但是所有Bookstores表都有相同的列集;
现在我想创建一个只有几列的"MasterTable".
| MasterTable |
|id. | title| isbn|
| 1 | abc | 123 |
| MasterToBookstores |
|m_id | tb_id | p_id |
| 1 | 1 | 2 |
| 1 | 2 | 1 |
| BookStore_Foo |
|p_id| title| isbn| date | size|
| 1 | xyz | 456 | 1998 | 3KB |
| 2 | abc | 123 | 2003 | 4KB |
| BookStore_Bar |
|p_id| title| isbn| publisher | Format |
| 1 | abc | 123 | H&K | PDF |
| 2 | mnh | 986 | Amazon | MOBI |
Run Code Online (Sandbox Code Playgroud)
我的问题是,以这种方式保存数据是否正确?关于这个和类似案例的最佳做法是什么?我可以给特定的Bookstore表一个带数字的别名,这有助于我管理整套表吗?
有没有更好的方法来做这样的事情?
我认为你混淆了"商店"和"书"的概念.
从你的评论和示例数据来看,问题在于书籍而不是商店具有不同的属性集.如果是这样,你需要一个与此类似的结构:

符号:
表示继承1.BOOK是"基类",BOOK1/BOOK2/BOOK3是各种"子类" 2.当实体共享一组属性或关系3时,这是一种常见的策略.有关此概念的更全面解释,请在" ERwin方法指南 "中搜索"子类型关系" .
遗憾的是,当前关系数据库并不直接支持继承,因此您需要将此层次结构转换为普通表.这样做通常有3种策略,如这些帖子所述:
注意:上述结构允许在同一书店内混合各种书籍类型.让我知道这是不可取的(即你在任何给定的书店里只需要一种类型的书籍)......
1阿卡.类别,子类化,子类型,泛化层次等
2即书籍类型,取决于它们所需的属性.
3在这种情况下,所有类型的书籍都与商店存在多对多的关系.