SQL中的多值列

时间:2014-12-16 07:42:44

标签: sql database ddl

我为Boat创建了一个包含以下列的表:BName, Type, Price, OName

但是,Type列应为以下之一:帆船,船屋或甲板船。

如何在create table语句中反映这一点。我搜索过它,我想出了这个声明,我不确定它是否正确:

CREATE TABLE Boat
(
    BName varchar(255),
    BType int,
    Price double,
    OName varchar(255),
    PRIMARY KEY (BName),
    FOREIGN KEY (BType) REFERENCES BoType(ID)
);

CREATE TABLE BoType
(
    ID int PRIMARY KEY,
    Type varchar(255)
)

这是最好的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

mycol VARCHAR(10) NOT NULL CHECK (mycol IN('moe', 'curley', 'larry'))

以下是有关MSSQL" Check Constraints"的详细信息:

答案 1 :(得分:1)

这是最好的方法,只需确保使用所需的参考值(即帆船,船屋,甲板船)填充BoType表。因为如果您使用约束,那么您拥有数据库的用户,他们不了解SQL,或者您的数据库中没有访问权限,您可以放心或者他们过于依赖您。但是,如果将其设置为单独的表,那么即使不了解SQL,系统/数据库的用户也可以通过front-end程序添加或更改值(例如ASPPHP) 。换句话说,您的设计更灵活,更具可扩展性,更不用说您的维护工作量更少了。