在sql中为一个属性添加不同的名称

时间:2014-04-12 14:32:41

标签: java sql

我需要为航班预订创建一个数据库。 在数据库中,我应该为类创建3个属性(第一类,业务类,经济类)还是一个属性就足够了因为我想将它链接到java,所以我可以选择其中一个类

3 个答案:

答案 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),它也是一个可读的解决方案