我需要为航班预订创建一个数据库。 在数据库中,我应该为类创建3个属性(第一类,业务类,经济类)还是一个属性就足够了因为我想将它链接到java,所以我可以选择其中一个类
答案 0 :(得分:0)
在你的情况下,只有一个'class'属性/列就足够了。这可以具有表示不同类的不同值。您还可以使用查找表来定义这些类的数值。
e.g。 表:预订
|id | class | ....
100 | 1 | ....
表:booking_classes
|class_id | class_name | ....
| 1 | first class | ....
在这种方法中,您不必担心将来可能的新类类型更改表列。
答案 1 :(得分:0)
这与你正在做的事情有关。在考虑java和类之前,你必须查看与Java问题无关的设计阶段,完成后你可以在之后开始使用Java代码。
您可以注意到,当您看到数据库的ERD和类的UML(java或c#)时,您将混合两个“几乎”分开的部分!
答案 2 :(得分:0)
你可以拥有包含FlightBookingID,Description,BookingClassID列的FlightBookings表 和另一个表BookingClasses,其中包含BookingClassID,Name列。 第一个表中的BookingClassID引用了第二个中的BookingClassID主键。
在您的表BookingClasses中,您可以存储您的价值观头等舱,商务舱,经济舱。
在java代码中,您将拥有:
public class FlightBooking {
private int _id;
private BookingClass _bookingClass;
…//appropriate setter and getters for both of the attributes
}
public class BookingClass {
private int _id;
private String _name;
…//appropriate setter and getters for both of the attributes
}
这可能是一种方法。或者你没有BookingClasses表,并且有一个简单的字符串作为类列,如: 包含FlightBookingID,Description,BookingClass列的FlightBookings 然后在java代码中将此第三列映射为枚举,其中枚举的值为First,Business and Economy。
对于数据库开发人员来说,第一个解决方案更好,因为他们知道什么是什么,第二个解决方案对于Java开发人员来说更高效,因为不需要JOIN SQL语句。但是,如果您使用hibernate并将数据库中的值存储为字符串(例如:BUSINESS),它也是一个可读的解决方案