我正试图为应用程序所需的数据库创建一个良好的模型。实现它的方法包括为添加的每个新元素创建一个新表,但我不确定这是否真的是一个好主意。我发现了一个相关的问题,用一个花园作为类比,我很喜欢这个,所以我会试着用下面的例子来说明。请注意,每个园丁只与一个花园工作。园丁不需要在几个花园里。
我有一套这样的Garderener:
PrimaryKey | Name | Garden
1 | Bob | Garden1
2 | James| Garden2
3 | Ian | Garden3每个花园都会指向一张新桌子,上面放着鲜花。花园里有所有的花。
FlowerNumber | Type
1 | Holly
2 | Lilach
3 | Larch那么,问题是,为每一个新的园丁创建一个新的餐桌花园是“正确的”吗?我一直认为创建新表格是一种浪费,但我不确定还有什么其他方法可以做到。我认为面向对象的思维可能扭曲了我对数据库的思考方式。
发布于 2013-10-30 13:17:08
不,我想没有这样的需要。您只需创建一个新的表花园,它将有自己的主键&它应该包含Gardner的外键。这样您就可以维护这些表之间的关系&可以使用SQL获取数据。注意使用外键插入和删除数据。
发布于 2013-10-30 14:44:22
上面的模型适用于花园不相关的花卉列表。但当花或园丁可能在多个花园里时,它就行不通了。
您应该为每种类型的实体都有一个表。您没有花园表,您有一个花卉桌,所以要完成模型,您需要添加一个花园表,并链接到它。
例如:
GardenerID | Name | Garden
1 | Bob | 1
2 | James | 2
3 | Ian | 3
FlowerID | Type | Garden
1 | Holly | 1
2 | Lilach | 2
3 | Larch | 3
4 | Larch | 2
GardenID | Address
1 | 221b Baker St
2 | 29 Acacia Rd
3 | 10 Downing St当然,外键在哪里取决于您想要如何定义关系,以及您是否希望有多个园丁到一个花园,反之亦然。
https://dba.stackexchange.com/questions/52496
复制相似问题