我在数据库中有一个“包”表。
一个包可以是三种类型之一:包A,包B和包C。
这三个包都有一些共同的字段,如:
1)名称
2)尺寸
3)重量
现在来看看独特的字段:
包A和B必须包含:
a)渠道
包C必须包含:
a)完成
因此,我在数据库中创建了一个名为“Package”的表。
然后,“Package”的列将是:
1)id
2)type(1 = PackageA,2 = PackageB,3 = PackageC)
3)名称
4)大小
5)重量
6)渠道(对于Package C不需要)
7)完成(对于Package A和B不需要)
因此,我创建了一个抽象类,如下所示(忽略属性的数据类型):
我用这种方法做错了什么?Package类应该是抽象类还是普通类呢?因为我不希望其他人直接操作Package类,而是使用Package A、B、C。
编辑:那数据库方面呢?像“channel”(适用于Package A和B)(对于Package C无需)和“completion”(对于Package C有必要)(对于Package A和B无需)这样的字段/列在不需要/不适用于特定的包类型时是否可以为“null”?
一个包可以是三种类型之一:包A,包B和包C。
这三个包都有一些共同的字段,如:
1)名称
2)尺寸
3)重量
现在来看看独特的字段:
包A和B必须包含:
a)渠道
包C必须包含:
a)完成
因此,我在数据库中创建了一个名为“Package”的表。
然后,“Package”的列将是:
1)id
2)type(1 = PackageA,2 = PackageB,3 = PackageC)
3)名称
4)大小
5)重量
6)渠道(对于Package C不需要)
7)完成(对于Package A和B不需要)
因此,我创建了一个抽象类,如下所示(忽略属性的数据类型):
public abstract class Package
{
public id;
public type;
public name;
public size;
public weight;
}
public class PackageA : Package
{
public channel;
}
public class PackageB : Package
{
public channel;
}
public class PackageC : Package
{
public completion;
}
我用这种方法做错了什么?Package类应该是抽象类还是普通类呢?因为我不希望其他人直接操作Package类,而是使用Package A、B、C。
编辑:那数据库方面呢?像“channel”(适用于Package A和B)(对于Package C无需)和“completion”(对于Package C有必要)(对于Package A和B无需)这样的字段/列在不需要/不适用于特定的包类型时是否可以为“null”?