Mysql 为地址更改创建正确的数据库表结构+;定价

Mysql 为地址更改创建正确的数据库表结构+;定价,mysql,sql,database,postgresql,database-design,Mysql,Sql,Database,Postgresql,Database Design,我有点困惑于我是否能让这个改变地址的过程变得更容易。我会解释一下情况: 基本上我有三个实体,学生,地址,学生女。学生有很多地址,因为他们可以快速地改变(特别是寄养儿童/无家可归的儿童)。所以我会改变他们很多。但是,根据我希望用户附加的每个地址(通过用户界面输入),通过公交车接送该学生所需的费用。所以我最初的想法是,好吧,让我在我的联接表“StudentSaddress”上附加一个列,称为“dailyPrice”,这是每天接送学生的成本,另一个列称为“adjustmentPrice”,这是接送学生

我有点困惑于我是否能让这个改变地址的过程变得更容易。我会解释一下情况:

基本上我有三个实体,学生,地址,学生女。学生有很多地址,因为他们可以快速地改变(特别是寄养儿童/无家可归的儿童)。所以我会改变他们很多。但是,根据我希望用户附加的每个地址(通过用户界面输入),通过公交车接送该学生所需的费用。所以我最初的想法是,好吧,让我在我的联接表“StudentSaddress”上附加一个列,称为“dailyPrice”,这是每天接送学生的成本,另一个列称为“adjustmentPrice”,这是接送学生时需要额外工作的任何特殊情况下的额外成本。将来我的学生越多,我的思想会给我带来问题吗?这会变得更难管理吗

我考虑的另一个选择是创建一个名为Pricing的新表。另一个连接类型表称为StudentsAddressesPricing StudentsAddressPricing有三列

studentId 
addressId 
pricingId
每个字段将这三个字段连接在一起。因此,如果我需要学生,以及他们的地址和定价,我会查询这个表,并急切地加载学生、地址和定价。自从我把定价抽象出来后,这种方法看起来更干净了吗?尝试确定最好的方法来实现这一点,而不必在将来遇到很多麻烦,以防我不想添加更多与定价相关或与地址相关的属性

然后我甚至想,如果一天的价格不同怎么办?我怎么会这样想呢?我需要另一种实体来处理吗?大量加入是否会影响我的应用程序性能


只是想了解一下别人会怎么做,并批评一下我为什么不在行。

你应该问自己的主要问题是:价格取决于什么

如果价格由地址决定,您不妨将其添加到
地址中。如果价格也取决于学生(例如,取决于他们的经济状况),那么将其放入
学生公寓
是有意义的


换句话说:存储价格的表应该具有决定价格的表外所有内容的外键。如果这使它适合现有的一个表,请保留在那里。

我认为您需要另一个跨国类型的表。因此,当用户输入任何数据时,它会与student、address的键一起进入这个表。谢谢,这非常清晰和合理。我对工作方式做了一些改变(在应用程序逻辑中解耦地址和定价),但这个答案仍然相关。